Overloading in ruby

Hi,

I’ve been doing some Ruby code interfacing with Windows COM objects and
I’ve ran into this problem:

I have a COM object method say object.Value(name) which - when i call it
with appropriate “name” value returns some value.

The problem is that the same is used (according to that COM lib
documentation) for setting data to the object - i should write
object.Value(name) = value and it should set the value.

However I have not found a way to do this in Ruby - it gives me (and I
can fully understand why) syntax error when I try to set data to the
object.

Does anybody know if this can be done using Ruby and possibly how?

Thanks, Tom.

On 2/23/07, Tomas K. [email protected] wrote:

object.Value(name) = value and it should set the value.

However I have not found a way to do this in Ruby - it gives me (and I
can fully understand why) syntax error when I try to set data to the
object.

Does anybody know if this can be done using Ruby and possibly how?

Thanks, Tom.

try:

object.Value[name] = value

or: have a look at WIN32OLE docs and see if setproperty or invoke
could do what you want

or: post the exact code possibly with the links to the lib
documentation.

I’m not good enough to guess a general case, but I’ve been playing
with COM a bit so I might be able to guess the particular case.

J.

Jan,

thanks very much. Setproperty did the trick for me.

Tom.

Jan S. wrote:

or: have a look at WIN32OLE docs and see if setproperty or invoke
could do what you want

When calling methods on com objects in vbscript (ugh! pain ouch ouch
ouch!) the overlaoded methods were accessed by a _number.

Lets say it’s the Vacuum object (the object that makes windows suck).
In overloadable languages you can pass a Soul, an Idea, or Creativity
into the Vacuum’s suck method. The order they are defined in is
important because that’s the order (as far as I was able to figure
out) that they are indexed in.
To use Vacuum to suck a soul it would be
myVaccum.suck_1(someonesSoul)
an idea would be
myVaccum.suck_2(goodIdeasAboutGuis)

But that was just in vbscript.

–Kyle