需要将变量a、b、c和d都设置为“foo”。
有没有一种方法可以通过一次性赋值来实现这个目标?像这样:
a、b、c、d = 'foo'
需要将变量a、b、c和d都设置为“foo”。
有没有一种方法可以通过一次性赋值来实现这个目标?像这样:
a、b、c、d = 'foo'
参考this
,最好的方式是按照需要将共同值分配给所有变量。
a= b= c = d = 'foo'
对于不同的值,你可以这样做
a, b, c, d = 'foo1', 'foo2', 'foo3', 'foo4'
a = b = c = d = 'foo'
a.reverse!
,那么 a、b、c 和 d 都将变成 'oof'。 - PreciousBodilyFluids这似乎是最安全的方式:
a, b, c, d = 4.times.map{'foo'}
这个与之类似,但稍微短一点:
a, b, c, d = (1..4).map{'foo'}
使用这种方式可能比使用数组乘法器或链式赋值更长,但是这样你实际上会得到不同的对象,而不是对同一对象的不同引用。
验证码:
[a,b,c,d].map(&:object_id)
object_id
相同,则您的变量引用相同的对象,而变异方法(例如sub!
)将影响所有4个变量看到的内容。如果它们不同,则可以改变一个而不影响其他变量。a = b = c = d = 'foo'
这绝对是正确的方法...如果你想要一个有点奇怪的方式:
a,b,c,d = %w{foo}*4
(%w{foo} 返回一个包含 foo 的字符串数组,*4 将该数组乘以 4,因此您将得到一个包含 4 个 foo 字符串的数组,并且您可以将该数组分配给多个逗号分隔的变量名)
a, b, c, d = ["foo"] * 4
的意思是将字符串 "foo" 赋值给变量 a、b、c 和 d。 - Joseph Yaduvanshi