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)
당신은 체크 아웃 할 수있다이
https://pine.fm/LearnToProgram/chap_10.html @Cary Swoveland 우리가 약간 더 깊이 갈 수있는 제안으로.
모든 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