Menu
Coddy logo textTech

클래스와 Regex를 활용한 Case 문

Coddy Ruby 여정의 로직 및 흐름 섹션에 포함된 레슨 — 56개 중 38번째.

case를 범위와 함께 사용해 보았습니다. 동일한 구문이 클래스정규 표현식과도 매칭됩니다. 둘 다 when이 내부적으로 호출하는 === 연산자를 통해 동작합니다.

어떤 종류의 값을 받았는지에 따라 분기하려면 클래스별로 매칭하세요:

def describe(value)
  case value
  when Integer then "a whole number"
  when Float   then "a decimal"
  when String  then "some text"
  else              "something else"
  end
end

puts describe(42)      # 정수
puts describe(3.14)    # 소수
puts describe("hi")    # 어떤 텍스트

정규식에 match하여 문자열의 모양, 전화번호, email, 날짜에 따라 분기합니다:

def kind_of(text)
  case text
  when /^\d+$/        then "all digits"
  when /@/            then "looks like an email"
  when /^[A-Z]/       then "starts with a capital"
  else                     "other"
  end
end

이는 if/elsif에서 is_a?match?를 연속으로 호출하는 것보다 훨씬 깔끔합니다.

challenge icon

챌린지

쉬움

한 줄의 입력을 읽습니다. 입력의 형태(looks)에 따라 case 문을 사용하여 다음 라벨 중 하나를 출력하세요:

  • 모두 숫자: number
  • @ 포함: email
  • 대문자로 시작: name
  • 그 외 모두: unknown

나열된 순서대로 규칙을 확인하세요 (따라서 123unknown이 아닌 number이고, kevin@coddy.techemail이며, Alicename입니다).

입력 kevin@coddy.tech에 대한 출력은 email입니다.

직접 해보기

input = gets.chomp

# TODO: case input ... when /^\d+$/, /@/, /^[A-Z]/ ... else ... end
quiz icon실력 점검

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

로직 및 흐름의 모든 레슨