【Ruby3.x】identical?()関数の使い方
identical?関数の使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
identical?モジュールは、オブジェクトの物理的な同一性を厳密に判定するための機能を提供する単位です。このモジュールが提供するidentical?関数は、二つのオブジェクトがメモリ上で全く同じ実体であるかを比較し、真偽値を返します。これは、オブジェクトの「値」が等しいかどうかを判断する==メソッドや、ハッシュキーとして等しいかを判断するeql?メソッドとは異なり、参照しているオブジェクトそのものが同一であるかを厳しくチェックする点が特徴です。
例えば、同じ内容を持つが別々に生成された二つの文字列オブジェクトは==では真を返しますが、identical?では偽を返します。一方、同じオブジェクトへの複数の参照がある場合、それらの参照間でidentical?は真を返します。特に、プログラム内で特定のオブジェクトインスタンスがユニークであるべきか、あるいはオブジェクトの変更が他の参照に影響するかどうかを確認したい場合に有用です。システムエンジニアにとって、オブジェクトの同一性と同等性の違いを理解することは、予期せぬバグを防ぎ、効率的なコードを書く上で非常に重要です。identical?関数は、このような低レベルでのオブジェクト比較を可能にし、より堅牢なプログラム設計をサポートします。
構文(syntax)
1# receiver.identical?(other) 2 3# 同じオブジェクトを参照している場合 4obj1 = Object.new 5obj2 = obj1 6puts obj1.identical?(obj2) # => true 7 8# 異なるオブジェクトを参照している場合 9obj3 = Object.new 10puts obj1.identical?(obj3) # => false 11 12# 値が同じでも異なるオブジェクトの場合 (文字列は通常、別のオブジェクトになる) 13str1 = "Ruby" 14str2 = "Ruby" 15puts str1.identical?(str2) # => false
引数(parameters)
obj1, obj2
- obj1: 比較対象となる最初のオブジェクト
- obj2: 比較対象となる2番目のオブジェクト
戻り値(return)
Boolean
2つのオブジェクトがメモリ上の同じインスタンスを参照している場合にtrueを返します。それ以外の場合はfalseを返します。