【发布时间】:2010-12-20 01:04:51
【问题描述】:
我刚刚阅读了这个答案Converting upper-case string into title-case using Ruby。
有下面这行代码
"abc".split(/(\W)/).map(&:capitalize).join
&:capitalize 到底是什么?在我自己将它放入 irb 之前,我会告诉你,它不是有效的 ruby 语法。它必须是某种Proc 对象,因为Array#map 通常会占用一个块。但事实并非如此。如果我把它单独放入 irb,我会得到syntax error, unexpected tAMPER。
【问题讨论】:
-
它在 irb 中对你不起作用的原因可能是因为,就像 sepp2k 所说,它只被嵌入到 Ruby 1.8.7 的标准库中,我猜你正在运行较早的版本。但是,您经常会看到它,因为 ActiveSupport 也将其引入,并且 ActiveSupport 是 Rails 附带的。如果您在 Rails 的脚本/控制台中尝试它,您可能会发现它有效。