发送字符串和发送符号以动态调用方法之间的区别是什么,例如foo.public_send(:bar)
vs foo.public_send('bar')
?这些处理方式是否存在具体差异?
如果符号更好,如果由于某种原因需要将方法名称构造为字符串,是否值得foo.public_send('bar'.to_sym)
?
答案 0 :(得分:3)
它们之间没有区别,事实上,当传递字符串时,它会转换为符号。
无需转换,因为如果提供了字符串,则会进行相同的转化(例如'bar'.to_sym
)。
来自docs:
调用 symbol 标识的方法,并传递任何参数 指定。与发送不同,
#public_send
仅调用公共方法。什么时候 该方法由字符串标识,该字符串转换为a 符号