在Ruby中,我可以定义一个方法foo =(bar):
irb(main):001:0> def foo=(bar)
irb(main):002:1> p "foo=#{bar}"
irb(main):003:1> end
=> nil
Run Code Online (Sandbox Code Playgroud)
现在我想检查它是否已定义,
irb(main):004:0> defined?(foo=)
SyntaxError: compile error
(irb):4: syntax error, unexpected ')'
from (irb):4
from :0
Run Code Online (Sandbox Code Playgroud)
在这里使用的正确语法是什么?我假设必须有一种方法来逃避"foo =",以便它被解析并正确传递给定义的?运营商.
如果我想检查是否定义了具有给定名称的方法,哪个更好用respond_to?,或者defined??
从效率的角度来看,可以有一个使用的参数defined?因为defined?是一个内置的关键字,而是respond_to?一个方法,因此前者可能更快.但另一方面,在已知要检查的表达式是一个简单方法的情况下,defined?需要解析整个表达式,与使用相比respond_to?,这可能是一个缺点,只需要将参数接受为方法名称.
哪个更好?除了效率之外还有其他问题需要考虑吗?