Overloading in ruby


#1

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.


#2

On 2/23/07, Tomas K. removed_email_address@domain.invalid 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.


#3

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


#4

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