0Pricing
Ruby Academy · 강의

배열과 해시 패턴

데이터 구조를 분해합니다

배열과 해시 패턴은(는) 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. case/in 기초
  2. 배열과 해시 패턴
  3. Find 패턴과 가드
  4. 실전 사용 사례
← Ruby Academy(으)로 돌아가기