블록 파라미터
Coddy Ruby 여정의 로직 및 흐름 섹션에 포함된 레슨 — 56개 중 18번째.
파이프 기호 사이의 변수들인 |x|, |x, y|는 블록 매개변수입니다. 이들은 메서드가 블록으로 전달하는 값의 이름을 지정합니다.
어떤 메서드는 하나의 값을 전달하고, 다른 메서드들은 여러 개의 값을 전달합니다. each는 한 번에 하나의 요소를 전달합니다:
[10, 20, 30].each { |n| puts n }each_with_index는 요소와 인덱스 두 가지를 전달합니다:
["a", "b", "c"].each_with_index do |letter, i|
puts "#{i}: #{letter}"
end
# 0: a
# 1: b
# 2: c해시를 반복할 때, 블록 매개변수는 키(key)와 값(value)입니다:
{ a: 1, b: 2 }.each do |key, value|
puts "#{key} = #{value}"
end블록 매개변수의 수와 순서는 메서드가 무엇을 yield 하느냐에 따라 달라집니다. 확실하지 않을 때는 문서를 확인하거나 매개변수 하나를 사용해보고 어떤 결과가 나오는지 확인해 보세요.
챌린지
쉬움scores 해시가 주어집니다. (name, points) 쌍과 그 위치에 모두 접근할 수 있도록 to_a 형태에서 each_with_index를 사용하여 반복하세요. 각 항목에 대해 다음 형식으로 한 줄씩 출력하세요:
<rank>. <name> - <points>여기서 rank는 0이 아닌 1부터 시작합니다.
기본 해시에 대한 출력 결과는 다음과 같습니다:
1. Alice - 90
2. Bob - 85
3. Cara - 78치트 시트
블록 매개변수(Block parameters)는 파이프 |...| 사이에 이름이 지정되며, 메서드에서 전달(yield)된 값을 받습니다:
# each – 하나의 매개변수
[10, 20, 30].each { |n| puts n }
# each_with_index – 요소와 인덱스
["a", "b", "c"].each_with_index do |letter, i|
puts "#{i}: #{letter}"
end
# hash each – 키와 값
{ a: 1, b: 2 }.each do |key, value|
puts "#{key} = #{value}"
endhash.to_a는 해시를 [key, value] 쌍의 배열로 변환하며, 이는 each_with_index와 함께 사용할 때 유용합니다:
{ a: 1, b: 2 }.to_a.each_with_index do |(key, value), i|
puts "#{i}: #{key} = #{value}"
end직접 해보기
scores = { "Alice" => 90, "Bob" => 85, "Cara" => 78 }
# TODO: 각 항목에 대해 "<rank>. <name> - <points>"를 출력하세요. 순위(rank)는 1부터 시작합니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.