将方法发送给收件人时:
method_name = :"#{some_method}"
send(method_name) if respond_to?(method_name, true)
是否意味着它是排序的象征?
答案 0 :(得分:3)
Ruby中的符号可以包含任何字符串值,但不能使用文字:xxx
表示法表示,除非xxx
是有效的标识符。对于无效标识符的符号,或者当您想使用字符串插值来创建符号时,可以使用符号:"yyy"
指定它们,Ruby也会报告它们:
irb(main):001:0> "foo".to_sym
=> :foo
irb(main):002:0> :foo
=> :foo
irb(main):003:0> "foo-bar".to_sym
=> :"foo-bar"
irb(main):004:0> :"foo-bar"
=> :"foo-bar"
您拥有的内容:“#{some_method}”与some_method.to_s.to_sym
相同。
正如我对其他帖子的评论中所述,如果您愿意,可以将字符串直接传递给send
而不是符号。
答案 1 :(得分:1)
您可以查看相关文档。 http://www.ruby-doc.org/core/classes/Object.html#M001005
是的,它确实需要一个符号,这意味着你也可以打电话,这对眼睛来说更容易。
send(method_name) if respond_to?(some_method.to_sym, true)