Menu
Coddy logo textTech

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]
challenge icon

챌린지

쉬움

입력으로부터 쉼표로 구분된 정수 목록을 읽습니다. 다음 두 줄을 출력하세요:

  1. 각 숫자를 두 배로 만든 후, , 로 연결하여 출력합니다. map중괄호(brace) 형태를 사용하세요.
  2. 각 숫자에 대해 "<n> squared is <n*n>" 문자열을 한 줄에 하나씩 출력합니다. eachdo...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` 형태
quiz icon실력 점검

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

로직 및 흐름의 모든 레슨