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