配列とハッシュのパターン
データを分解します。
「配列とハッシュのパターン」はCoddyKit上の無料Ruby Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応の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入れ子になったパターン
パターンは自由に入れ子にできるため、1つの分岐で深い構造を分解できます。
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
endAI チューターと学ぶ Ruby — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 29
- レッスン
- 109
よくある質問
「配列とハッシュのパターン」レッスンは無料ですか?
はい。「配列とハッシュのパターン」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ruby Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ruby Academyコースには全4レッスンが含まれています。
「配列とハッシュのパターン」で何を学びますか?
データを分解します。 ブラウザで直接実行するハンズオンコードでRuby Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ruby Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのRuby Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「配列とハッシュのパターン」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このRuby Academyレッスンでコードを書いて実行できますか?
はい。すべてのRuby Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- case/in の基礎
- 配列とハッシュのパターン
- Find パターンとガード
- 実践的なユースケース