[#16113] Strange idea... exporting from a scope — "Hal E. Fulton" <hal9000@...>

Hello...

33 messages 2001/06/01

[#16364] Re: Garbage Collection? — Michael Davis <mdavis@...>

Windows 2000 and linux (RedHat 6.2). I have run these tests on both OSs.

12 messages 2001/06/09

[#16400] Symbolic Computation III — Mathieu Bouchard <matju@...>

14 messages 2001/06/11

[#16502] Playing with Ruby Syntax (was: Initial thoughts about Ruby From a Smalltalk Programmer) — jweirich@...

Michael> Hi Everyone, I have to say I'm utterly fascinated by Ruby

9 messages 2001/06/15

[#16661] Problem running irb with Ruby 1.6.4 under FreeBSD 4.0 — Bob Alexander <balexander@...>

I've installed Ruby 1.6.4 on a FreeBSD 4.0 machine, and get the

11 messages 2001/06/20

[#16686] opening db files made by apache dbmmanage — Fritz Heinrichmeyer <fritz.heinrichmeyer@...>

14 messages 2001/06/21

[#16801] rb_define_class() vs Class.new() — Kero van Gelder <kero@...4050.upc-d.chello.nl>

Hi,

18 messages 2001/06/23
[#16802] Re: rb_define_class() vs Class.new() — ts <decoux@...> 2001/06/23

>>>>> "K" == Kero van Gelder <kero@d4050.upc-d.chello.nl> writes:

[#16841] RE: national characters is strings — "Aleksei Guzev" <aleksei.guzev@...>

Next week I'll try to rebuild Ruby with Unicode strings. But it would be

15 messages 2001/06/25
[#16842] Re: national characters is strings — matz@... (Yukihiro Matsumoto) 2001/06/25

Hi,

[#16843] Re: national characters is strings — "Aleksei Guzev" <aleksei.guzev@...> 2001/06/25

That's good enough. But I'm afraid this could ( not would ) cause string

[#16868] Something strange with Ruby's inheritance mechanism — Eric Jacoboni <jaco@...>

As Ruby beginner, i try some "canonical" OO scripts. Doing so, I've

14 messages 2001/06/25
[#16873] RE: Something strange with Ruby's inheritance mechanism — "Aleksei Guzev" <aleksei.guzev@...> 2001/06/26

[#16879] Re: Something strange with Ruby's inheritance mechanism — Mathieu Bouchard <matju@...> 2001/06/26

On Tue, 26 Jun 2001, Aleksei Guzev wrote:

[#16869] Something strange with Ruby's inheritance mechanism — Eric Jacoboni <jaco@...>

As Ruby beginner, i try some "canonical" OO scripts. Doing so, I've

12 messages 2001/06/25

[#16881] — "Aleksei Guzev" <aleksei.guzev@...>

32 messages 2001/06/26
[#16916] Re: Method overloading (option) Was: Re: — "Wayne Blair" <wayne.blair@...> 2001/06/26

[#16920] Re: Method overloading (option) Was: Re: — matz@... (Yukihiro Matsumoto) 2001/06/26

Hi,

[#16888] finalizers, destructors and whatnot — "David Leal" <david@...>

Hi all,

16 messages 2001/06/26

[#17037] keeping an Exception object alive — David Alan Black <dblack@...>

Hello --

19 messages 2001/06/28
[#17055] Re: keeping an Exception object alive — matz@... (Yukihiro Matsumoto) 2001/06/29

Hi,

[#17066] RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/06/29

Hello --

[#17076] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — matz@... (Yukihiro Matsumoto) 2001/06/29

Hi,

[#17079] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/06/29

Hello --

[#17138] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — matz@... (Yukihiro Matsumoto) 2001/07/02

Hi,

[#17141] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — David Alan Black <dblack@...> 2001/07/02

Hello --

[#17142] Re: RCR: Exception methods (was: Re: Re: keeping an Exception object alive) — ts <decoux@...> 2001/07/02

>>>>> "D" == David Alan Black <dblack@candle.superlink.net> writes:

[ruby-talk:16787] Re: Simulating call-by-reference in Ruby

From: Paul Brannan <pbrannan@...>
Date: 2001-06-23 00:36:28 UTC
List: ruby-talk #16787
On Fri, 22 Jun 2001, Tobin Baker wrote:

> #Ruby
> baz = nil
> myFoo.bar {|baz|}
> p baz #=> 10
...
> Is this reasonable syntax, or is it just getting too ugly?

One problem with this is that because you can't really get the values of
the "out" parameters in the block, you can't have inout parameters, as you
mentioned.  What's worse, you must now divide your parameters into two
groups: in parameters and out parameters.  While this might work fine for
RubyX11, it's not going to work well for CORBA.

If we have an IDL that looks like:

interface Foo {
    void f(in a, out b, inout c, in d);
}

Then we would have to call the function f like this:

    f(a, c, d) {|b, c|}

which is sorta confusing, because the arguments are completely out of
order.

On the other hand, using a helper class like Java uses allows us to
specify our arguments in the same order as found in the IDL.

Below is a helper class I've hacked together for inout parameters.  Each
helper gets a new type, so you can do type checking to make sure you are
sending the right type across the wire.  The only thing I wish were
different is that because FixnumHelper doesn't derive from Fixnum, you
can't necessarily use a FixnumHelper wherever you can use a Fixnum.
Unfortunately, if you derive from Fixnum, then you can't call set_value().

Paul

---------
class InoutHelper
end

class InoutHelperFactory
    def InoutHelperFactory.new_helper(wrapped_class)
        customer = Class.new(InoutHelper)
        customer.const_set("WRAPPED_CLASS", wrapped_class)
        customer.class_eval(%{
            def initialize(i)
                @i = i
            end
            def set_value(other)
                case other
                    when self.type
                        @i = other.i
                    when WRAPPED_CLASS
                        @i = other
                    else
                        raise TypeError
                end
            end
            def get_value()
                return @i
            end
            def to_s()
                return @i.to_s()
            end
            def method_missing(*args)
                @i.__send__(*args)
            end
        })
        return customer
    end
end

FixnumHelper = InoutHelperFactory.new_helper(Fixnum)
def foo(inout)
    inout.set_value(42)
end
a = FixnumHelper.new(10)
puts a
foo(a)
puts a
puts a + 5

#=>
10
42
47


In This Thread