Когда вам нужно передать аргументы `Thread.new`?
Локальные переменные, определенные вне потока, кажутся видимыми изнутри, так что следующие два использованияThread.new
похоже одинаковые
a = :foo
Thread.new{puts a} # => :foo
Thread.new(a){|a| puts a} # => :foo
документ дает пример:
arr = []
a, b, c = 1, 2, 3
Thread.new(a,b,c){|d, e, f| arr << d << e << f}.join
arr #=> [1, 2, 3]
но с тех порa
, b
, c
видны изнутри созданного потока, это также должно быть так же, как:
arr = []
a, b, c = 1, 2, 3
Thread.new{d, e, f = a, b, c; arr << d << e << f}.join
arr #=> [1, 2, 3]
Есть ли разница? Когда вам нужно передать локальные переменные в качестве аргументовThread.new
?