Block이란?
Coddy Ruby 여정의 로직 및 흐름 섹션에 포함된 레슨. 56개 중 15번째.
이미 block을 작성해 왔습니다. each do |x| ... end를 작성할 때마다 do와 end 사이의 부분은 메서드에 전달되는 코드 덩어리인 block이었습니다.
[1, 2, 3].each do |n|
puts n * 2
end여기서 each는 배열의 메서드이고, do |n| ... end는 블록입니다. each는 각 요소마다 블록을 한 번씩 실행하며, 해당 요소를 n으로 전달합니다.
블록은 변수에 저장하는 별도의 객체가 아니라 메서드 호출에 직접 연결됩니다. 메서드는 block을 받거나 받지 않으며, 대부분의 반복 메서드(each, map, select, times)는 하나를 받도록 설계되어 있습니다.
3.times do |i|
puts "hi #{i}"
end블록 없이 메서드를 호출하면 메서드의 동작이 달라집니다. 블록 없이 [1,2,3].map을 호출하면 변환된 배열 대신 열거자를 반환하므로, 블록은 메서드가 의미하는 것의 일부입니다.
챌린지
초급입력에서 정수 n을 읽습니다. times 메서드를 블록과 함께 사용하여 0부터 n - 1까지의 각 i 값에 대해 메시지 Iteration <i>를 출력합니다.
입력 3의 경우 출력은 다음과 같습니다.
Iteration 0
Iteration 1
Iteration 2직접 해보기
n = gets.to_i
# TODO: 각 반복을 출력하려면 블록과 함께 n.times를 사용하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
로직 및 흐름의 모든 레슨
직접 연습해 보세요: 온라인 Ruby 컴파일러