new(*args, name: nil) {|*args| ... } -> RactorRuby 3.0 から[permalink][rdoc][edit]-
Ractor を生成して、ブロックの評価を開始します。生成した Ractor を返します。
ブロックは外側のスコープから隔離されます。ブロックの中の
selfは生成した Ractor です。ブロックは外側のローカル変数を参照できません。外側のオブジェクトをブロックで使うにはargsで渡します。また、&で渡した Proc は隔離のために変更され、shareable になります。- [PARAM]
args: - ブロックの引数として渡されます。値が shareable である場合はそのインスタンスが、そうでない場合はコピーが試みられた値が渡されます。コピーできない値であった場合は例外が発生します。
- [PARAM]
name: - Ractor の名前を指定します。
- [EXCEPTION]
ArgumentError: -
ブロックが外側のローカル変数を参照している場合や、
yieldを使っている場合に発生します。
例: 外側のオブジェクトを引数で渡すa = 1 Ractor.new { a } # ~> ArgumentErrora = [1, 2] r = Ractor.new(a) {|x| x.sum } p r.take # => 3 - [PARAM]