Kiedy musisz przekazać argumenty do `Thread.new`?

Zmienne lokalne zdefiniowane poza wątkiem wydają się być widoczne od wewnątrz, tak że następujące dwa zastosowaniaThread.new wydają się być takie same:

a = :foo
Thread.new{puts a} # => :foo
Thread.new(a){|a| puts a} # => :foo

Thedokument podaje przykład:

arr = []
a, b, c = 1, 2, 3
Thread.new(a,b,c){|d, e, f| arr << d << e << f}.join
arr #=> [1, 2, 3]

lecz odkąda, b, c są widoczne z wewnątrz utworzonego wątku, powinno to być takie samo jak:

arr = []
a, b, c = 1, 2, 3
Thread.new{d, e, f = a, b, c; arr << d << e << f}.join
arr #=> [1, 2, 3]

Czy jest jakaś różnica? Kiedy musisz przekazać zmienne lokalne jako argumenty doThread.new?

questionAnswers(1)

yourAnswerToTheQuestion