4

& 演算子を使用してパラメーターを使用してメソッドを呼び出すことはできないのだろうか?

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

2 に答える 2

7

いいえ、できません。完全なフォームを使用します。

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

「理由」については、Symbol#to_procのソースを参照してください。

于 2013-07-24T10:21:34.770 に答える
3

ちょっとしたトリックを使って、似たようなことを達成できます:

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

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

ただし、gem などはSymbol#[]. これは、いじるのが楽しいものです;-)

于 2013-07-24T10:47:56.680 に答える