Ruby 2.5.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Threadクラス > fetch

instance method Thread#fetch

fetch(name, default = nil) {|name| ... } -> object[permalink][rdoc]

name に関連づけられたスレッドに固有のデータを返します。 name に対応するスレッド固有データがない時には、引数 default が与えられていればその値を、ブロックが与えられていればそのブロックを評価した値を返します。

[PARAM] name:
スレッド固有データのキーを文字列か Symbol で指定します。
[PARAM] default:
name に対応するスレッド固有データがない時の返り値を指定します。
[EXCEPTION] KeyError:
引数defaultもブロックも与えられてない時、 name に対応するスレッド固有データがないと発生します。


th = Thread.new { Thread.current[:name] = 'A' }
th.join
th.fetch(:name)   # => "A"
th.fetch(:fetch, 'B')   # => "B"
th.fetch('name')  {|name| "Thread" + name}  # => "A"
th.fetch('fetch') {|name| "Thread" + name}  # => "Threadfetch"

[SEE_ALSO] Thread#[]