【Ruby3.x】Ractor::[]=()メソッドの使い方
[]=メソッドの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
[]=メソッドは、Ractorが持つ、キーと値のペアを格納するストレージに値を設定するメソッドです。Ractorは、Ruby 3で導入された、独立したメモリ空間を持つ並行処理の単位であり、通常は互いにデータを直接共有できません。しかし、Ractor間で安全に情報を共有する仕組みが必要な場合があります。このメソッドは、Ractorインスタンスに紐付けられた特別なストア(共有ストレージ)に対して、指定したキーに関連付けて値を保存するために使用されます。
この機能により、他のRactorがそのRactorインスタンスから、保存されたキーを使って値を取得(Ractor#[]メソッド)できるようになります。例えば、my_ractor[:status] = "running" のように記述することで、my_ractorというRactorインスタンスの共有ストレージに:statusというキーで"running"という文字列を保存できます。
重要な点として、このメソッドで保存できる値は、フリーズされたオブジェクト(変更不可能なオブジェクト)やRactorが安全と判断するオブジェクトに限られます。これにより、複数のRactorから同時に同じデータにアクセスした際のデータ競合(レースコンディション)を防ぎ、安全な並行処理を実現します。Ractor間のメッセージパッシングと合わせて、Ractorの連携を強化する重要な手段の一つです。
構文(syntax)
1r = Ractor.new do 2 # Ractor内での処理 3end 4r[:key] = "value"
引数(parameters)
sym, val
- sym: Ractor の内部状態に格納する値のキーとなるシンボル
- val: Ractor の内部状態に格納する値
戻り値(return)
Object
指定されたキーに対応する値を、自身が保持するハッシュに設定し、その設定された値を返します。