发送字符串和发送符号以动态调用方法有什么区别,例如
foo.public_send(:bar)
vsfoo.public_send('bar')
?这些处理方式是否有具体区别?foo.public_send('bar'.to_sym)
如果符号更好,如果出于某种原因需要将方法名称构造为字符串,是否值得这样做?
问问题
157 次
1 回答
4
它们之间没有区别,事实上,当传递一个字符串时,它被转换为一个符号。
无需转换它,因为如果提供了字符串
'bar'.to_sym
,将完成相同的转换(例如)。
从文档:
调用由symbol标识的方法,将任何指定的参数传递给它。与发送不同,
#public_send
仅调用公共方法。当方法由字符串标识时,字符串被转换为符号。
于 2017-08-23T18:45:36.650 回答