Ruby `send` vs `call` method
我正在读一篇关于Ruby1.9的文章。
但有了最新版本的Ruby,我得到了:
1 2 3 4 5 6 7 8 9 10 | BasicObject.methods.include? :send # => true BasicObject.methods.include? :call # => false Object.methods.include? :call # => false def foo puts 'text' end Object.send :foo # => text Object.call :foo # => NoMethodError: undefined method `call' for Object:Class |
我认为在Ruby的某些版本(可能是1.9)中,方法被重命名了。但我不确定。请讲清楚。
首先,
在Ruby中,面向对象的概念源于Smalltalk。基本上,当您调用一个方法时,会向该对象发送一条消息。因此,当您想要对一个对象动态调用一个方法时,您调用的方法是
在Ruby中,我们还有一个"块"的概念。块是附加到方法调用末尾的
(注:由于某种原因,