【Ruby3.x】Module::===()メソッドの使い方
===メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
===メソッドは、Rubyにおいて主にcase文での条件分岐に利用される比較メソッドです。このメソッドは、一般的な等価性を判定する==メソッドとは異なり、レシーバー(このメソッドが呼び出されるモジュールまたはクラス)が引数(比較対象のオブジェクト)のクラスであるか、またはその祖先(スーパークラスやインクルードされたモジュール)であるかを評価します。
より具体的には、引数がレシーバーのインスタンスであるか、あるいは引数のクラスがレシーバーを継承またはインクルードしている場合にtrueを返します。それ以外の場合はfalseを返します。この特性により、case文ではwhen節にクラスやモジュールを指定することで、そのオブジェクトが指定された型であるかどうかを簡潔に判定できます。例えば、case value when String then ...という記述は、内部的にはString === valueとして評価され、valueがStringクラスのインスタンスであれば処理が実行されます。
このように===メソッドは、オブジェクトの型や継承関係に基づいて条件分岐を行う際に非常に強力なツールとなります。特に、さまざまな型のオブジェクトを扱う必要がある場合に、柔軟で読みやすいコードを書く手助けとなります。
構文(syntax)
1String === "Hello"
引数(parameters)
req
- obj: 比較対象のオブジェクト
戻り値(return)
Boolean
指定されたオブジェクトが、レシーバーであるモジュール(またはクラス)のインスタンスであるかどうか、あるいはモジュールが指定されたクラスのサブクラスであるかどうかを判定します。判定結果は真偽値(trueまたはfalse)で返されます。