【Ruby3.x】String::===()メソッドの使い方
===メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
===メソッドは、Stringオブジェクトと他のオブジェクトとの間で、主にcase文で使用される特別な比較を実行するメソッドです。
具体的には、左辺のStringオブジェクトが、右辺に与えられたオブジェクトと等価であるかどうかを判定し、その結果を真偽値(trueまたはfalse)で返します。他の多くのオブジェクトにおける===メソッドと同様に、Stringクラスの===メソッドは、基本的に==演算子とほぼ同じ働きをします。つまり、二つの文字列が内容的に完全に一致するかどうかを確認します。例えば、"Ruby" === "Ruby" は true となり、"Ruby" === "ruby" は false となります。
このメソッドの主な用途は、Rubyのcase文のwhen節です。case文では、when節の値がレシーバ(呼び出し元)となり、case文の式の値が引数として渡されて===メソッドが呼び出されます。Stringオブジェクトが左辺にあり、右辺に比較対象の文字列が与えられた場合、文字列の内容が一致するかどうかを判定します。
ただし、case "テキスト" when /パターン/ のように、when節に正規表現オブジェクトが指定された場合は、実際には正規表現オブジェクト側のRegexp#===メソッドが呼び出されます。このとき、文字列が正規表現にマッチするかどうかが判定されます。これは、Rubyのcase文がwhen節のオブジェクトの===メソッドを呼び出す仕組みによるものです。
このように、String#===メソッドは文字列の等価性を確認する基本的な機能を提供しつつ、case文の柔軟なパターンマッチングにおいて重要な役割を果たしています。
構文(syntax)
1"hello" === "hello"
引数(parameters)
req
- pattern: String, Regexp, Array, Hash, Range, nil, false, true, Integer, Symbol: 比較対象となるオブジェクト
戻り値(return)
Boolean
指定された文字列がレシーバー文字列に含まれている場合に真 (true) を、含まれていない場合に偽 (false) を返します。