2017-08-23 44 views
0
  1. 什么是发送一个字符串,并发送一个符号动态调用的方法,例如,foo.public_send(:bar) VS foo.public_send('bar')之间的区别?这些处理方式是否存在具体差异?动态调度在红宝石:字符串VS符号

  2. 如果符号更好,是否值得做foo.public_send('bar'.to_sym)如果由于某种原因需要将您的方法名称构造为字符串?

回答

3
  1. 他们之间没有区别,实际上,传递当它被转换为一个符号。如果提供

  2. 无需将其转换因为是相同的转换(例如'bar'.to_sym)将完成。

docs

调用由符号标识的方法,传递任何参数 指定。与发送不同,#public_send仅调用公共方法。当 该方法由字符串标识时,该字符串将转换为 符号。

+0

很酷,谢谢!猜猜我是盲人,我错过了最后一句话,当我在文档中寻找这个:) – tjukes