Robert Klemme a ñÄrit :
> Bob Hutchison <hutch / recursive.ca> wrote:
> 
>> On Jan 6, 2006, at 11:36 PM, James Edward Gray II wrote:
>>
>>> That works.  Now can anyone give me a version of the middle section
>>> that doesn't require I call parse?() 50 times?  I want something
>>> close to:
>>>
>>>   elements = tokens.map do |token|
>>>     [ClassA, ClassB, ClassC].find { |kind| kind.parse?(token) }
>>>   end
>>>
>>> Except that I want the return result of parse?(), instead of the
>>> class that took it.
>>
>>
>> Why not:
>>
>> elements = tokens.map do |token|
>>   result = nil
>>   [ClassA, ClassB, ClassC].find { |kind| result = kind.parse?(token) }
>> end
> 
> 
> Because this won't return the proper value from the block.  You need at
> least to add a line with "result" after the #find. :-)  And then it's
> much more inelegant than using #detect. :-)
> 
> Kind regards
> 
>    robert
> 

Well, looking at the documentation of ruby1.8, detect and find are
aliases ... is it specific to ruby1.8 or some newer/older version ?

Pierre