do..end vs 중괄호
Coddy Ruby 여정의 로직 및 흐름 섹션에 포함된 레슨 — 56개 중 16번째.
Ruby는 블록을 작성하는 두 가지 방법을 제공합니다. 두 방법은 같은 의미를 갖지만, 각각 선호되는 사용 사례가 있습니다.
do...end는 여러 줄 블록을 위한 것입니다:
[1, 2, 3].each do |n|
doubled = n * 2
puts "#{n} -> #{doubled}"
end중괄호 { ... }는 짧고 표현식 형태인 한 줄 블록에 사용됩니다:
[1, 2, 3].each { |n| puts n * 2 }두 방식은 우선순위가 약간 다르지만, 학습자가 기억해야 할 규칙은 스타일 규칙입니다: 한 줄짜리에는 중괄호를, 여러 줄에는 do...end를 사용하는 것입니다.
두 형식 모두 값을 반환할 수 있습니다. 블록의 마지막 표현식이 map과 같은 메서드로 다시 전달되는 값입니다:
[1, 2, 3].map { |n| n * 10 } # [10, 20, 30]
[1, 2, 3].map do |n|
n * 10
end # [10, 20, 30]챌린지
쉬움입력으로부터 쉼표로 구분된 정수 목록을 읽습니다. 다음 두 줄을 출력하세요:
- 각 숫자를 두 배로 만든 후,
,로 연결하여 출력합니다.map의 중괄호(brace) 형태를 사용하세요. - 각 숫자에 대해
"<n> squared is <n*n>"문자열을 한 줄에 하나씩 출력합니다.each의do...end형태를 사용하세요.
입력이 1,2,3인 경우, 출력은 다음과 같습니다:
2, 4, 6
1 squared is 1
2 squared is 4
3 squared is 9치트 시트
Ruby 블록에는 두 가지 구문이 있습니다:
한 줄 블록을 위한 중괄호 { ... }:
[1, 2, 3].map { |n| n * 2 } # [2, 4, 6]여러 줄 블록을 위한 do...end:
[1, 2, 3].each do |n|
doubled = n * 2
puts "#{n} -> #{doubled}"
end두 형식 모두 블록의 마지막 표현식을 반환합니다 (map과 같은 메서드에서 사용됨).
직접 해보기
numbers = gets.chomp.split(",").map(&:to_i)
# TODO: 1행, 2배로 만듦, `map`의 중괄호 형태, ", "로 연결됨
# TODO: 2..n행, 제곱값들, `each`의 `do...end` 형태
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.