Ruby on rails 变量赋值

Ruby on rails 变量赋值,ruby-on-rails,ruby,variables,variable-assignment,Ruby On Rails,Ruby,Variables,Variable Assignment,变量a、b、c和d都需要设置为“foo” 有没有一种方法可以一次性完成这项任务?比如: a、 b,c,d='foo'Ref 最好的方法如下所示,因为您需要所有变量的公共值 a= b= c = d = 'foo' 对于不同的值,您可以这样做 a, b, c, d = 'foo1', 'foo2', 'foo3', 'foo4' 我相信Ruby支持正常类型的链式赋值,比如: a = b = c = d = 'foo' 这肯定是正确的方法。。。如果你想用一种奇怪的方式: a,b,c,d = %w

变量a、b、c和d都需要设置为“foo”

有没有一种方法可以一次性完成这项任务?比如:

a、 b,c,d='foo'

Ref

最好的方法如下所示,因为您需要所有变量的公共值

a= b= c = d = 'foo'
对于不同的值,您可以这样做

a, b, c, d = 'foo1', 'foo2', 'foo3', 'foo4'

我相信Ruby支持正常类型的链式赋值,比如:

a = b = c = d = 'foo'
这肯定是正确的方法。。。如果你想用一种奇怪的方式:

a,b,c,d = %w{foo}*4

(%w{foo}返回一个包含foo的字符串数组,*4将该数组相乘,因此得到一个包含4倍字符串foo的数组,并且可以将数组分配给多个逗号分隔的变量名)

这似乎是最安全的方法:

a, b, c, d = 4.times.map{'foo'}
这一个是相似的,稍微短一点:

a, b, c, d = (1..4).map{'foo'}
它可能比使用数组乘法器或链式赋值要长,但这样实际上会得到不同的对象,而不是对同一对象的不同引用

验证码:

[a,b,c,d].map(&:object_id)

如果
object\u id
s相同,则您的变量引用的是相同的对象,而mutator方法(例如
sub!
)将影响所有4个变量所看到的内容。如果它们不同,您可以在不影响其他变量的情况下对其中一个进行变异。

请小心,因为这会将所有变量指向内存中的同一个实际字符串。所以,如果你当时做了
a.reverse那么a、b、c和d都将是“oof”。另外:
a、b、c、d=[“foo”]*4
[a,b,c,d].map(&:object_id)