Menu
Coddy logo textTech

블록 파라미터

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 하느냐에 따라 달라집니다. 확실하지 않을 때는 문서를 확인하거나 매개변수 하나를 사용해보고 어떤 결과가 나오는지 확인해 보세요.

challenge icon

챌린지

쉬움

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}"
end

hash.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부터 시작합니다.
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

로직 및 흐름의 모든 레슨