【发布时间】:2010-04-23 07:59:42
【问题描述】:
我已经看过好几次了,但我不知道如何使用它们。镐说这些是特殊的快捷方式,但我找不到语法描述。
我曾在这种情况下见过他们:
[1,2,3].inject(:+)
例如计算总和。
【问题讨论】:
-
仅供参考,你的例子是错误的,它应该是
[1,2,3].inject(&:+) -
我仔细检查过,[1,2,3].inject(:+) 确实有效。为什么?
-
那么它一定是
inject方法的一个特性。inject(:+)不是 Symbol#to_proc,:+在 ruby 语言中没有特殊含义——它只是一个符号。 -
是的,在 ruby 1.8.7+ 中,当没有给出块时,注入使用它的第一个参数作为方法名称(这比使用 Symbol#to_proc 或常规块快得多,顺便说一句)。
标签: ruby