[#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:16786] Re: Simulating call-by-reference in Ruby

From: Mathieu Bouchard <matju@...>
Date: 2001-06-22 23:21:15 UTC
List: ruby-talk #16786
On Fri, 22 Jun 2001, Tobin Baker wrote:
> It occurred to me that return-by-reference (e.g. IDL out parameters)
> could be simulated using the fact that parameters to a block bind to
> variables of the same name in the enclosing scope.  So we could have:
> #Ruby
> baz = nil
> myFoo.bar {|baz|}
> p baz #=> 10

This parallels something I've been elaborating about RubyX11 (and finally
coded last night)

In X11 you don't have inout parameters; you have a "in" list and a "out"
list. An "inout" parameter simply appears in both. (But that possibility
is rarely used, in comparison of references to remote objects)

A X11 call is a Send/Receive pair. In between the two you you have a loop
accepting Events, Errors, and Replies, the three kinds of input. When a
matching Reply is found, the call returns a "out" Object. (a decoded
reply)

Obviously this is very wasteful as each call is a round-trip in the
network. So half of the calls have no Receive half, and so they just
return nil. so you can send many at once, quickly.

Now I've added this feature (which afaik is unique in X11 client
libraries): a Send/Receive pair can be split in two like this:

a_remote_object.a_method(in1,in2,in3) {|out1,out2,out3|

	some code that is called whenever \
	the reply is accepted
}

And those can be resynced by wrapping them in a Display#wait_for call:

my_display.wait_for {
	foo.bar(in1,in2) {|out1,out2| blah }
	foo.baz(in1,in2) {|out1,out2| blah }
	foo.qux(in1,in2) {|out1,out2| blah }
}

performs three Sends, then waits until the three Receives that go with
it have been completed (code blocks executed, etc)

So to get back on topic, if you want a particular in/out pair to be
considered really as in/out, you do, for example:

foo.bar(a,b,c) {|b,d,e| ... }

where a,c are in, b is inout, and d,e are out.

but if you want b to keep the old b, then you only have to rename your
params:

foo.bar(a,b,c) {|z,d,e| ... }

so now your b is in only, but you have a new out called z.

The control is in the hands of the user.

matju

In This Thread