J
James Edward Gray II
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
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