我理解的概念,some_instance.send但我试图弄清楚为什么你可以同时调用它。Ruby Koans 暗示除了提供许多不同的方法来做同样的事情之外,还有一些原因。以下是两个使用示例:
some_instance.send
class Foo def bar? true end end foo = Foo.new foo.send(:bar?) foo.__send__(:bar?)
有人对此有任何想法吗?
一些类(例如标准库的 socket 类)定义了自己的send方法,与Object#send. 因此,如果您想使用任何类的对象,则需要使用__send__以确保安全。
send
Object#send
__send__
现在留下了一个问题,为什么有send而不只是__send__. 如果只有__send__名称send可以被其他类使用而不会造成任何混淆。原因是它send首先存在,后来才意识到该名称send也可能在其他上下文中有用,因此添加了(顺便说一句,这与__send__发生的事情相同)。id``object_id
id``object_id