case/in の基礎
構造的マッチングです。
「case/in の基礎」はCoddyKit上の無料Ruby Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはRuby Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ruby Academyコースには全4レッスンが含まれています。
パターンマッチングの登場
Rubyのcase/in式は構造的パターンマッチングを実行します。単なる等価性ではなく、データの形状と内容を検査します。case/whenを強力に発展させた機能です。
case 42
in Integer
puts 'it is an integer'
endcase/inとcase/when
case/whenは===で比較します(等価性ベースです)。case/inは値を分解し、変数に束縛できます。構造のマッチングにはinを使用します。
case 'hello'
in String => s
puts "string of length #{s.length}"
endリテラルのマッチング
inの分岐ではリテラル値にマッチさせることができ、正確な等価性チェックのように動作します。
case 3
in 1 then puts 'one'
in 3 then puts 'three'
in _ then puts 'other'
end型パターン
クラス名を指定すると、その型の値にマッチします。内部では===が利用されます。
def describe(x)
case x
in Integer then 'number'
in String then 'text'
in Array then 'list'
end
end
puts(describe([1, 2]))変数の束縛
パターン内の単独の識別子は、マッチした値を束縛し、分岐内で使用できる新しい変数を作成します。
case [1, 2]
in [a, b]
puts(a + b)
endワイルドカード
アンダースコア_は、束縛せずにあらゆる値にマッチします。すべてを受け入れる場合や、位置を無視する場合に使用します。
case 99
in 0 then puts 'zero'
in _ then puts 'something else'
endピン演算子
新しい変数を束縛するのではなく、既存の変数の値に対してマッチさせるには、^でピン留めします。
expected = 5
case 5
in ^expected
puts 'matched the pinned value'
end代替パターン
|でパターンを組み合わせると、1つの分岐で複数の候補のいずれかにマッチさせられます。
case 'b'
in 'a' | 'b' | 'c'
puts 'in the first three letters'
endマッチ全体の束縛
pattern => nameを使用すると、パターンを検査し、マッチした値を同時に名前に束縛できます。
case 'Ruby'
in String => word
puts(word.upcase)
endNoMatchingPatternError
どのin分岐にもマッチせず、elseもない場合、RubyはNoMatchingPatternErrorを発生させます。残りを安全に処理するにはelseを追加します。
case 10
in 1 then puts 'one'
else
puts 'no specific match'
end1行のマッチング
=>演算子は、1行で右向き代入によるマッチングを行い、失敗すると例外を発生させます。一方、in演算子はtrue/falseを返します。
result = [1, 2] in [Integer, Integer]
puts result確認問題
case/inにマッチする分岐もelseもない場合、どうなりますか。
まとめ:case/inの基本
構造的マッチングの基礎を学びました。
case/inは単なる等価性ではなく、形状に基づいてマッチします- リテラル、型パターン、
_ワイルドカード - 変数の束縛とピン演算子
^ |とpattern => nameによる代替パターン- マッチしない場合は
NoMatchingPatternErrorが発生します
case 7
in Integer => n then puts(n * 2)
endよくある質問
「case/in の基礎」レッスンは無料ですか?
はい。「case/in の基礎」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ruby Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ruby Academyコースには全4レッスンが含まれています。
「case/in の基礎」で何を学びますか?
構造的マッチングです。 ブラウザで直接実行するハンズオンコードでRuby Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ruby Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのRuby Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「case/in の基礎」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このRuby Academyレッスンでコードを書いて実行できますか?
はい。すべてのRuby Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- case/in の基礎
- 配列とハッシュのパターン
- Find パターンとガード
- 実践的なユースケース