2
  1. 发送字符串和发送符号以动态调用方法有什么区别,例如foo.public_send(:bar)vs foo.public_send('bar')?这些处理方式是否有具体区别?

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

4

1 回答 1

4
  1. 它们之间没有区别,事实上,当传递一个字符串时,它被转换为一个符号

  2. 无需转换它,因为如果提供了字符串'bar'.to_sym,将完成相同的转换(例如)。

文档

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

于 2017-08-23T18:45:36.650 回答