Send()在Ruby中的含义?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (20)

谁能告诉我

send("#{Model.find...}")

他的作用是什么?

提问于
用户回答回答于

send 在类层次结构中向对象实例及其祖项发送消息,直到某个method作出反应(因为它的名称与第一个参数相匹配)。

实际上,这些是相同的:

1.send '+', 2
1.+(2)
1 + 2

请注意,send绕过可见性检查,以便您也可以调用私有方法(对单元测试有用)。

如果在发送之前确实没有变量,那意味着使用全局对象:

send :to_s    # "main"
send :class   # Object
用户回答回答于

send是一个ruby(没有rails)方法,允许通过名字调用另一个method。

从文档

   class Klass
     def hello(*args)
       "Hello " + args.join(' ')
     end
   end
   k = Klass.new
   k.send :hello, "gentle", "readers"   #=> "Hello gentle readers"

http://corelib.rubyonrails.org/classes/Object.html#M001077

扫码关注云+社区