带参数的&符运算符

时间:2013-07-24 10:19:57

标签: ruby

我想知道,是不是可以使用&带参数的运算符?

items.each &:my_proc # ok
items.each &:my_proc(123, "456") # ops!

2 个答案:

答案 0 :(得分:7)

不,这是不可能的。使用完整表格。

items.each{|i| i.my_proc(123, '456')}

请查看Symbol#to_proc的来源,了解“为什么”。

答案 1 :(得分:3)

你可以使用一些技巧并实现类似的东西:

class Symbol
  def [](*args)
    proc{|obj| obj.send(self, *args) }
  end
end

[123.456, 234.567].map(&:round[2])
#=> [123.46, 234.57]

我强烈反对在生产代码中使用,因为宝石等可能依赖于Symbol#[]。这只是一个有趣的事情; - )