Proc.new
ブロックを引数として呼び出して渡すオブジェクトを作成しました。
a = Proc.new{|x| x = x*10; puts(x)}
#=> #<Proc:0xd26fd8@(irb):3>
a.call(10)
#100
#=> nil
a.call(10,20)
#100
#=> nil
a.call(10,20,40)
#100
#=> nil
私も使いませんでしたsplat operator(*)
。x
しかし、ブロック パラメーターが余分な引数を無視できるようにするにはどうすればよいでしょうか。
同じことをすると明確なエラーが発生しますが、なぜブロック パラメーターの場合はそうではないのでしょうか?
def show(x)
print "X::#{x}"
end
#=> nil
show(10)
#X::10#=> nil
show(10,20)
#ArgumentError: wrong number of arguments (2 for 1)
# from (irb):6:in `show'
# from (irb):10
# from C:/Ruby193/bin/irb:12:in `<main>'