Присвоить массив значений массиву переменных - PullRequest
0 голосов
/ 29 мая 2018

У меня есть массив переменных, таких как

a,b,c = [10,20,30]

и

values = [1, 2, 3]

и переменные a, b, c to dкак показано ниже

d = [a,b,c]

Есть ли способ присвоения значений переменным без итерации, например d = values, чтобы я получил следующее?

a = 1,б = 2, с = 3

1 Ответ

0 голосов
/ 29 мая 2018

Использование

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)

...