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

From: senderista@... (Tobin Baker)
Date: 2001-06-25 01:43:23 UTC
List: ruby-talk #16837
Michael Neumann <neumann@s-direktnet.de> wrote in message news:<3l_Y6.3692$Mq.409673@e420r-sjo3.usenetserver.com>...
> 
> Perhaps I am missing something but why not use a InOut class:
> 
> class InOut
>   attr_accessor :value
>   def initialize(value=nil)
>     @value = value
>   end
> end
> 
> # generate n InOut objects
> def InOutFac(n)
>   (1..n).collect {InOut.new}
> end
> 
> # "declare" b and c
> b, c = InOutFac(2)
> 
> c.value = 22
> 
> f(a, b, c, d)
> 
> But probably that's not what you want. 
> 
> Regards,
> 
>   Michael

It seems to me that holder classes such as what you describe are
mainly necessary for the IDL-Java mapping.  C++ has return
by-reference, and Ruby can return an array, but Java is at a double
disadvantage, since it has neither return-by-reference nor multiple
return values--hence the need for holder classes.  But I see little
need to introduce this inconvenience into the Ruby mapping.

As I see it I basically have three alternatives:

1. Use holder classes like the IDL-Java mapping to make CORBA calls
from Ruby look as much as possible like the IDL declaration, but add
the extra inconvenience of dealing with wrapper classes.

2. Use something "magical" like my first or second proposals to
preserve both IDL semantics and language transparency.

3. Bite the bullet and use a convention like that recommended in the
Python mapping spec, which is perhaps more natural for the target
language but makes CORBA calls from Ruby look nothing like their IDL
declarations.

Of course, IDL was designed in the first place to look like C++, which
explains the use of return-by-reference rather than returned tuples to
simulate multiple return values.  So maybe the real question is, why
force Ruby to look like C++?  The most natural way in Ruby to return
multiple values from a method is obviously to return a list.  This is
how both the Perl and Python mappings treat out parameters.  Inout
parameters, however, are a different story.  The Perl mapping treats
them fairly naturally (as parameters to the method call) but both the
Python convention and the block-parameters trick force the programmer
to write inout parameters twice, once on each side of the assignment. 
As another post pointed out, this seems unnecessarily awkward.  It
therefore seems to me that my first proposal may not be as bad as I
had thought.  Having to put a colon in front of each inout parameter
is no worse, I think, than having to put a backslash in front of each
parameter (as in the Perl mapping).  And the fact that the caller is
forced to pass its context explicitly is perhaps not such a bad thing,
as another poster pointed out.  It shows that the caller is aware that
the method it's calling may alter any aspect of its environment.  I
think what I might do is include all of these possibilities in the
initial release, perhaps with some configure options to choose between
them.  User feedback is probably my best guide in these matters.  And
by the way, Matz, any thoughts on the caller_binding() proposal?

In This Thread