Ruby&:运算符可以接受参数吗?

时间:2017-07-05 06:18:30

标签: ruby

能够使用&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或方法?有没有办法传递参数,或使用像否定(!)的逻辑运算符?

0 个答案:

没有答案
相关问题