变量a,b,c和d都需要设置为'foo'。
有没有办法在一次俯冲任务中完成这项任务?像:
a,b,c,d ='foo'
答案 0 :(得分:14)
参考this
按照以下方式执行此操作的最佳方式,因为您需要对所有变量具有共同价值
a= b= c = d = 'foo'
你可以做不同的价值
a, b, c, d = 'foo1', 'foo2', 'foo3', 'foo4'
答案 1 :(得分:3)
我相信Ruby支持正常类型的链式赋值,例如:
a = b = c = d = 'foo'
答案 2 :(得分:0)
a = b = c = d = 'foo'
肯定是正确的方法......如果你想要一点怪异的方式:
a,b,c,d = %w{foo}*4
(%w {foo} 返回包含 foo 的字符串数组, * 4 将此数组相乘,以便获得包含4次的数组字符串 foo ,您可以将数组分配给多个以逗号分隔的变量名称)
答案 3 :(得分:0)
这似乎是最安全的方式:
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
是相同的,那么你的变量指的是同一个对象,而mutator方法(例如sub!
)将影响所有4个变量看到的内容。如果它们不同,你可以改变一个而不影响其他人。