Ruby Academy · レッスン

配列とハッシュのパターン

データを分解します。

レッスン 2/413 ステップ

「配列とハッシュのパターン」は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
end
無料で開始

AI チューターと学ぶ 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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. case/in の基礎
  2. 配列とハッシュのパターン
  3. Find パターンとガード
  4. 実践的なユースケース
← Ruby Academyに戻る