다중 값을 처리하는 when 문
Coddy Ruby 여정의 로직 및 흐름 섹션에 포함된 레슨 — 56개 중 39번째.
하나의 when 절은 쉼표로 구분된 여러 값 중 하나와 일치할 수 있습니다. 대상이 그 중 하나와 같으면 해당 분기가 실행됩니다.
day = "Sat"
kind = case day
when "Sat", "Sun" then "weekend"
when "Mon", "Tue", "Wed", "Thu", "Fri" then "weekday"
end
puts kind # weekend이것은 if/elsif 문에서 ||를 연결하는 것보다 훨씬 더 깔끔합니다.
하나의 when 절에서 여러 값 타입을 섞어서 사용할 수도 있습니다. 문자열, 범위(range), 정규식 패턴 등 === 연산자에 응답하는 모든 것들을 사용할 수 있습니다:
def describe(x)
case x
when 0, nil then "empty"
when 1..9 then "small"
when 10..99 then "medium"
when /^huge:/i then "flagged huge"
end
end각 분기를 한눈에 읽기 쉽게 만드는 형식을 선택하세요.
챌린지
쉬움단일 문자(입력 한 줄)를 읽습니다. 다중 값 when 분기가 있는 case를 사용하여 다음 중 하나를 출력하세요:
vowel: 입력이a, e, i, o, u중 하나인 경우 (대소문자 구분 없음, 먼저 입력을 소문자로 변환하세요)digit: 입력이0..9중 하나인 경우 (범위를 사용하세요)punctuation: 입력이.,,,!,?중 하나인 경우other: 그 외의 모든 경우
입력을 단일 문자 문자열로 취급하세요. "0".."9"와 같은 범위를 사용하여 digit 분기를 테스트하세요.
입력이 E이면 출력은 vowel입니다. 7이면 digit이고, !이면 punctuation입니다.
치트 시트
when 절은 쉼표로 구분된 여러 값을 일치시킬 수 있습니다:
case day
when "Sat", "Sun" then "weekend"
when "Mon", "Tue", "Wed", "Thu", "Fri" then "weekday"
end동일한 case 문 내에서 문자열, 범위(range), 그리고 정규식 패턴을 혼합하여 사용할 수 있습니다:
case x
when 0, nil then "empty"
when 1..9 then "small"
when /^huge:/i then "flagged huge"
end직접 해보기
ch = gets.chomp
# TODO: case ch.downcase ... 다중 값 when 분기 사용
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.