Использование
a,b,c = values
a #=> 1
b #=> 2
c #=> 3
Для обновленной части: иметь d = [a,b,c]
и думать о назначении d = values
и ожидать изменения a, b, c не будет работать, потому что d = [a,b,c]
- это назначение, d
устанавливается как [10,20,30]
.
Возможно, что-то подобное может помочь в понимании того, как этого можно достичь:
a, b, c = [10, 20, 30]
values = [1,2,3]
d = -> (x) { a, b, c = x }
a #=> 10
b #=> 20
c #=> 30
d.call values
a #=> 1
b #=> 2
c #=> 3
d
в вышеприведенном случае является lambda
, они именуются блоком, который может быть вызван позже.Они связываются с переменными в текущей области видимости, поэтому они могут изменять их при вызове (d.call
)