变量赋值

时间:2010-06-27 16:40:00

标签: ruby-on-rails ruby variables variable-assignment

变量a,b,c和d都需要设置为'foo'。

有没有办法在一次俯冲任务中完成这项任务?像:

a,b,c,d ='foo'

4 个答案:

答案 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个变量看到的内容。如果它们不同,你可以改变一个而不影响其他人。