Find パターンとガード
マッチ時の条件を扱います。
「Find パターンとガード」はCoddyKit上の無料Ruby Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはRuby Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ruby Academyコースには全4レッスンが含まれています。
ガード条件
パターンにifまたはunlessのガードを追加できます。パターンと条件の両方が成立した場合にのみ、分岐がマッチします。
case 7
in Integer => n if n.odd?
puts 'odd integer'
endガードで束縛変数を使う
ガードではパターンによって束縛された変数を参照できます。そのため、マッチしたデータについて複雑な条件を表現できます。
case [4, 9]
in [a, b] if a < b
puts 'ascending pair'
endunlessガード
unlessガードは条件が偽の場合にマッチします。ifの反対の動作です。
case 0
in Integer => n unless n.positive?
puts 'zero or negative'
end複数のガード付き分岐
複数の分岐にガードを組み合わせると、わかりやすい判断の流れを構築できます。
def grade(score)
case score
in Integer => s if s >= 90 then 'A'
in Integer => s if s >= 70 then 'B'
else 'C'
end
end
puts(grade(85))findパターン
findパターン[*, x, *]は、両端にスプラットを置いて、配列のどこにでも存在するサブパターンを検索します。
case [1, 2, 3, 4]
in [*, 3, *]
puts 'contains a 3'
endfind内での束縛
findパターンでマッチした要素を束縛し、見つかった値を取り込めます。
case [10, 20, 30]
in [*, x, *] if x > 25
puts("found #{x}")
end周囲の要素を取り込む
findパターンの両方のスプラットに名前を付けると、マッチの前後にある要素を取り込めます。
case [1, 2, 99, 4, 5]
in [*before, 99, *after]
p before
p after
end型付き要素の検索
findパターンと型パターンを組み合わせると、指定した型の最初の要素を検索できます。
case [1, 'hi', 2]
in [*, String => word, *]
puts(word)
endガードとパターン
構造として表現できるものはパターンで表し、数値比較やメソッド呼び出しなど、パターンで表現できない条件に限ってガードを使用します。
case { role: 'admin', age: 40 }
in { role: 'admin', age: } if age >= 18
puts 'adult admin'
endfindとガードの組み合わせ
findパターンとガードを組み合わせると、「この条件を満たす要素が存在するか」を調べられます。
numbers = [3, 5, 8, 11]
case numbers
in [*, n, *] if n.even?
puts("first even-ish hit: #{n}")
end分岐の順序
分岐は上から下へ試され、最初にマッチした分岐が選ばれます。より具体的なガード付きパターンを、一般的なパターンより前に置いてください。
case 100
in Integer => n if n > 50 then puts 'big'
in Integer then puts 'small'
end確認問題
findパターン[*, x, *]は何をしますか。
まとめ:findパターンとガード
マッチングに条件と検索を追加しました。
- ガード
if/unlessでパターンを絞り込めます - ガードでは束縛された変数を使用できます
- findパターン
[*, x, *]はどこにでも存在する要素を検索します - 両方のスプラットに名前を付けて周囲の要素を取り込めます
- 最初にマッチした分岐が選ばれるため、順序が重要です
case [1, 7, 3]
in [*, x, *] if x > 5 then puts x
endよくある質問
「Find パターンとガード」レッスンは無料ですか?
はい。「Find パターンとガード」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ruby Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ruby Academyコースには全4レッスンが含まれています。
「Find パターンとガード」で何を学びますか?
マッチ時の条件を扱います。 ブラウザで直接実行するハンズオンコードでRuby Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ruby Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのRuby Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「Find パターンとガード」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このRuby Academyレッスンでコードを書いて実行できますか?
はい。すべてのRuby Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- case/in の基礎
- 配列とハッシュのパターン
- Find パターンとガード
- 実践的なユースケース