I have a group of classes, all implementing a parse?() class method.
Calling parse?(token) will return the constructed object, if it can
be parsed by this class, or false otherwise.
I want to run a bunch of tokens through these classes, grabbing the
first fit. For example:
elements = tokens.map do |token|
ClassA.parse?(token) or
ClassB.parse?(token) or
ClassC.parse?(token)
end
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.
Thanks for any tips you can offer.
James Edward Gray II