我刚读了这个答案使用Ruby将大写字符串转换为title-case.
有以下代码行
"abc".split(/(\W)/).map(&:capitalize).join
Run Code Online (Sandbox Code Playgroud)
到底是&:capitalize什么?在我把它变成irb之前,我会告诉你,这不是有效的ruby语法.它必须是某种Proc对象,因为Array#map正常需要一个块.但事实并非如此.如果我把它单独放入irb,我会得到syntax error, unexpected tAMPER.
foo(&a_proc_object)变成a_proc_object一个块并用该块调用foo.
foo(¬_a_proc_object)调用to_proc上not_a_proc_object,然后转向通过返回的PROC对象to_proc成块和与该块调用foo.
在ruby 1.8.7+中,Symbol#to_proc定义了活动支持以返回一个proc,该proc调用由proc的参数上的符号命名的方法.
它是Symbol#to_proc:见http://pragdave.pragprog.com/pragdave/2005/11/symbolto_proc.html
map(&:capitalize)与...完全相同map { |x| x.capitalize }.
| 归档时间: |
|
| 查看次数: |
3012 次 |
| 最近记录: |