将值数组分配给变量数组

Nav*_*mar 0 ruby local-variables

我有一些变量,如

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

values = [1, 2, 3]

和下面的变量a,b,c到d一样

d = [a,b,c]

有没有办法在没有迭代的情况下为变量赋值,就像 d = values我得到以下内容一样?

a = 1,b = 2,c = 3

kid*_*ils 5

使用

a,b,c = values
a #=> 1
b #=> 2
c #=> 3
Run Code Online (Sandbox Code Playgroud)

对于更新的部分:拥有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
Run Code Online (Sandbox Code Playgroud)

d在上面的例子中是a lambda,它们被命名为block,可以在以后调用.它们与当前范围中的变量绑定,因此它们可以在调用时更改它们(by d.call)