From: Stefano Crocco Date: 2008-09-13T18:24:01+09:00 Subject: Re: Is my method defined? 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