能够使用&amp ;:速记在多个元素上调用Proc /方法很棒:
[0,4,7].map(&:to_s) # => ["0","4", "7"]
[0,4,7].select(&:zero?) # => [0]
[0,4,7].reduce(&:+) # => 11
[0,4,7].count(&:nil?) # => 0
简单地将参数或逻辑运算符传递给Proc不起作用:
[0,4,7].map(&:to_s(2)) # Syntax error
[0,4,7].select(&:!zero?) # Syntax error
[0,4,7].select(&:<5) # Syntax error
[0,4,7].count(!&:nil?) # Syntax error
相反,我需要使用长格式:
[0,4,7].map { |e| e.to_s(2)} # => ["0", "100", "111"]
[0,4,7].select { |e| !e.zero?} # => [4,7]
[0,4,7].select { |e| e < 5 } # => [0,4]
[0,4,7].count { |e| !e.nil? } # => 3
我还有其他选择吗?我可以通过哪些方式修改我调用的Proc或方法?有没有办法传递参数,或使用像否定(!)的逻辑运算符?