Stefano Crocco
9/13/2008 9:24:00 AM
Alle Saturday 13 September 2008, Fredrik ha scritto:
> I have a method by the name methodA. I want to access this method like
> this
>
> a = 'methodA'
> eval(a)
>
> But how do I know if the variable a actually holds the name of a
> defined method? An exception is raised if I try to run eval(a) with an
> incorrect method name, but I need to know this before I call eval(a).
> How do I do that?
>
> I found this solution:
>
> def method?(arg)
> begin
> method(a)
> rescue
> nil
> end
> end
>
> which does work, but why is this function "method?" not already in the
> Ruby language then?
In my opinion, for two reasons:
1) the name is misleading. Methods ending in ? usually are method which only
answer a Yes/No question, without taking any action. The method you propose,
instead, perform an action and doesn't give an answer to a question. If I were
a user seeing a method called 'method?', I'd think it's a synonym for
respond_to?, or similar to it.
2) This functionality isn't needed very often, and it's very easy to write
your own method if you need it, as you have done.
Stefano