& 演算子を使用してパラメーターを使用してメソッドを呼び出すことはできないのだろうか?
items.each &:my_proc # ok
items.each &:my_proc(123, "456") # ops!
& 演算子を使用してパラメーターを使用してメソッドを呼び出すことはできないのだろうか?
items.each &:my_proc # ok
items.each &:my_proc(123, "456") # ops!
いいえ、できません。完全なフォームを使用します。
items.each{|i| i.my_proc(123, '456')}
「理由」については、Symbol#to_procのソースを参照してください。
ちょっとしたトリックを使って、似たようなことを達成できます:
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#[]
. これは、いじるのが楽しいものです;-)