배열과 해시 패턴
데이터 구조를 분해합니다
배열과 해시 패턴은(는) CoddyKit의 무료 Ruby Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Ruby Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Ruby Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
배열 패턴
배열 패턴은 위치와 길이를 기준으로 일치합니다. 각 요소 패턴은 해당 위치의 요소와 비교됩니다.
case [1, 2, 3]
in [1, 2, 3]
puts 'exact match'
end배열 요소 바인딩
식별자를 사용하여 각 위치의 값을 변수에 담으십시오.
case [10, 20]
in [x, y]
puts(x + y)
end길이가 중요합니다
기본적으로 배열 패턴에는 정확한 길이가 필요합니다. 요소가 2개인 패턴은 요소가 3개인 배열과 일치하지 않습니다.
case [1, 2, 3]
in [a, b]
puts 'two'
in [a, b, c]
puts 'three'
end나머지를 위한 스플랫
스플랫 *rest은 남은 요소를 개수에 관계없이 배열에 담아 길이를 유연하게 만듭니다.
case [1, 2, 3, 4]
in [first, *rest]
puts(first)
p rest
end중간에 사용하는 스플랫
스플랫을 고정된 요소 사이에 배치하면 중간은 무시하면서 앞부분과 뒷부분을 가져올 수 있습니다.
case [1, 2, 3, 4, 5]
in [first, *, last]
puts("#{first} ... #{last}")
end해시 패턴
해시 패턴은 키를 기준으로 일치합니다. 지정한 키가 존재하고 그 값이 일치하는지 확인하며, 추가 키는 허용합니다.
case { name: 'Ada', age: 36 }
in { name: 'Ada' }
puts 'found Ada'
end해시 값 바인딩
키에 바인딩 이름을 지정하여 값을 가져올 수 있습니다. 키만 작성하면 같은 이름의 변수에 연결됩니다.
case { name: 'Bob', age: 25 }
in { name: String => n, age: Integer => a }
puts("#{n} is #{a}")
end키 바인딩 단축형
키 뒤의 패턴을 생략하면 키 이름을 딴 변수에 자동으로 연결됩니다.
case { city: 'Istanbul' }
in { city: }
puts(city)
end추가 키 허용하지 않기
해시 패턴은 기본적으로 추가 키를 무시합니다. 나열한 키만 존재하도록 하려면 **nil을 추가하십시오.
case { a: 1 }
in { a: 1, **nil }
puts 'exactly one key'
end중첩 패턴
패턴은 자유롭게 중첩할 수 있으므로 하나의 분기에서 깊은 구조도 분해할 수 있습니다.
data = { user: { name: 'Ada', tags: ['admin', 'dev'] } }
case data
in { user: { name:, tags: [first_tag, *] } }
puts("#{name}: #{first_tag}")
end파싱된 JSON 일치시키기
패턴 일치는 파싱된 JSON 또는 CSV 데이터와 잘 어울리며, 필요한 필드만 정확하게 가져올 수 있습니다.
require 'json'
resp = JSON.parse('{"status":"ok","items":[1,2,3]}', symbolize_names: true)
case resp
in { status: 'ok', items: }
puts(items.sum)
end빠른 확인
기본적으로 해시 패턴 in { a: 1 }은 해시 { a: 1, b: 2 }와 일치합니까?
복습: 배열 및 해시 패턴
컬렉션을 분해할 수 있습니다:
- 배열 패턴은 위치와 길이를 기준으로 일치합니다
*rest는 남은 요소를 가져옵니다- 해시 패턴은 키를 기준으로 일치하며 추가 키를 허용합니다
- 단축형
{ key: }은 같은 이름의 변수에 연결됩니다 **nil은 추가 키를 금지하며 패턴은 깊게 중첩할 수 있습니다
case { id: 1, items: [9, 8] }
in { items: [head, *] } then puts head
end자주 묻는 질문
“배열과 해시 패턴” 강의는 무료인가요?
네 — “배열과 해시 패턴” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Ruby Academy 강의 전체를 잠금 해제할 수 있습니다. Ruby Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“배열과 해시 패턴”에서 뭘 배우나요?
데이터 구조를 분해합니다 브라우저에서 직접 실행하는 실습 코드로 Ruby Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Ruby Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Ruby Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“배열과 해시 패턴” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Ruby Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Ruby Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- case/in 기초
- 배열과 해시 패턴
- Find 패턴과 가드
- 실전 사용 사례