Robert Klemme wrote:
> On 18.01.2008 20:11, Justin Collins wrote:
>> Rados• £¬w Bu• £¬t wrote:
>>> In python when you use method name without parenthesises you get
>>> method reference. In Ruby it won't work beacuse method can be called
>>> without parenthesises (and Ruby programmers love it :)). If you want
>>> to get method reference you can use method(:you_method_name) and you
>>> get reference to Method instance. Later you can just call 'call'
>>> method and pass some parameters. Direct traslation of your program to
>>> Ruby looks like:
>>>
>>> def firstWay(arg1, arg2)
>>> return 'Tastes great.'
>>> end
>>>
>>> def secondWay(arg1, arg2)
>>> return 'Less filling.'
>>> end
>>>
>>> def doStuff(whichway, first_arg, second_arg)
>>> return whichway.call(first_arg, second_arg)
>>> end
>>>
>>> puts doStuff(method(:firstWay), nil, nil
>>
>> Ah, that's the one I was looking for. Then you can do:
>>
>> def doStuff(whichway, first_arg, second_arg)
>> whichway[first_arg, second_arg]
>> end
>
> Yeah, but do you really consider
>
> doStuff(method(:firstWay), nil, nil)
>
> more concise than
>
> send(:firstWay, nil, nil)
>
> ?
>
> Cheers
>
> robert
Clearly this is just a toy example to show options for how one might
call methods using variable names. If the doStuff method actually did
more stuff, then it would no longer be equivalent to send.
-Justin