Sal*_*lil 55 ruby ruby-on-rails
a = b = c = d = 5
puts (a) >> 5
puts (b) >> 5
puts (b) >> 5
puts (b) >> 5
a= a+1
puts (a) >> 6
puts (b) >> 5
我发现分配这样的值没有问题.我的问题是,应该像上面给出的那样分配还是像这样?
a , b, c, d = 5, 5, 5, 5
gle*_*ald 103
这里需要注意的是,你的情况只能正常工作,因为数字在Ruby中是不可变的.您不希望使用字符串,数组,哈希或除数字之外的其他任何内容来执行此操作,因为它会创建对同一对象的多个引用,这几乎肯定不是您想要的:
a = b = c = d = "test"
b << "x"
=> "testx"
a
=> "testx"
并行形式对所有类型都是安全的:
a,b,c,d = "test","test","test","test"
=> ["test", "test", "test", "test"]
b << "x"
=> "testx"
a
=> "test"
以这种方式分配它是没有错的(a = b = c = d = 5).如果所有变量都需要具有相同的值,我个人更喜欢它.
这是另一种方式:
a, b, c, d = [5] * 4
如果感觉良好,那就去做吧.
正如您所发现的那样,语言允许它,并且它的行为与您期望的一样.我建议你应该问自己唯一的问题是表达性:代码是告诉你它的目的是什么?
就个人而言,除了初始化为默认值之外,我并不特别喜欢使用此构造,最好是零.理想情况下,如此初始化的变量都具有类似的目的,例如计数器.但是,如果我有多个类似用途的变量,我可能会考虑将它们声明为一种复制形式,然后重构为例如Hash.