def test(args,&block)
yield
end
test 1, {puts "hello"}
最後の行は機能しません。他の引数を指定してブロックを渡すにはどうすればよいですか?他の引数を指定してブロックを渡すにはどうすればよいですか?
def test(args,&block)
yield
end
test 1, {puts "hello"}
最後の行は機能しません。他の引数を指定してブロックを渡すにはどうすればよいですか?他の引数を指定してブロックを渡すにはどうすればよいですか?
test(1){ puts "hello" }
または
test(1) do
puts "hello"
end
または
blk = proc{ puts "hello" }
test(1, &blk)
@Cary Swovelandたちはやや深い行くことができます示唆したように、このhttps://pine.fm/LearnToProgram/chap_10.html
をチェックアウトすることができます。
すべてのRubyメソッドは、暗黙的にブロックを受け入れることができます。そして、あなたがあなたのメソッドのシグネチャでそれを定義しなかったとしても、あなたはまだそれを捕捉し、さらに渡すことができます。
だから、私たちはあなたの方法で、次の操作を行うことができ、このアイデアを考慮:
def test(args, &block)
yield
end
は
def test(args)
yield
end
と
あなたが持っているdef test(args)
block = Proc.new
block.call
end
と同じと同じですこの暗黙的なブロックキャプチャでは、おそらく余分なチェックを追加したいでしょう:
def test(args)
if block_given?
block = Proc.new
block.call
else
"no block"
end
end
又は
def test(args)
if block_given?
yield
else
"no block"
end
end
したがって、これらのメソッドを呼び出すと、以下の戻ります
test("args")
#=> no block
test("args"){ "Hello World" }
#=> "Hello World"
が完了@CarySwovelandを – fl00r
'試験(1){プット "ハロー"}' – fl00r