【Ruby3.x】Ractor::MovedObject::==()メソッドの使い方
==メソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
==メソッドは、Ractor::MovedObjectクラスのインスタンス間で、値が同等であるかを比較するメソッドです。
Ruby 3から導入されたRactorは、並行処理を安全に行うための機能です。複数のRactor間でオブジェクトを受け渡す際、オブジェクトが安全に別のRactorへ「移動」(ムーブ)することがあります。このとき、オブジェクトが移動した元のRactorからは、移動済みオブジェクトを参照しようとすると、その代わりにRactor::MovedObjectという特別なオブジェクトが返されます。これは、対象のオブジェクトがもうこのRactorには存在しない、という「状態」を示す「空の箱」のようなものです。
一般的にRubyにおいて、==メソッドは、二つのオブジェクトの「値」が論理的に等しいかどうかを判断するために使われます。しかし、Ractor::MovedObjectは具体的なデータを保持するのではなく、オブジェクトが移動したという特殊な「状態」を表すため、この==メソッドの振る舞いも独特です。通常、Ractor::MovedObjectのインスタンスを他のRactor::MovedObjectや異なる型のオブジェクトと比較した場合、その値が等しいと判断されることはほとんどありません。この==メソッドが真(true)を返すのは、比較対象が完全に同じRactor::MovedObjectのインスタンスである場合、またはRubyの内部的な仕様によって極めて限定的に同値と見なされる条件下のみです。このため、実用上、Ractor::MovedObject同士の==比較は、特定のデバッグシナリオを除き、常に偽を返すと考えても差し支えありません。これは、Ractor::MovedObjectが参照のセマンティクスではなく、状態のセマンティクスを持っていることに起因します。
構文(syntax)
1moved_object_instance == other_object
引数(parameters)
other
- other: 比較対象のオブジェクト
戻り値(return)
Boolean
指定された Ractor::MovedObject オブジェクトが、比較対象のオブジェクトと等しいかどうかを真偽値 (Boolean) で返します。