你为什么要在发送邮件时追加:

时间:2011-02-02 16:46:42

标签: ruby

将方法发送给收件人时:

method_name = :"#{some_method}"

send(method_name) if respond_to?(method_name, true)

是否意味着它是排序的象征?

2 个答案:

答案 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)