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?
a , b, c, d = 5, 5, 5, 5
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?
a , b, c, d = 5, 5, 5, 5
的事情要注意的是这里因为数字是在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"
thanx glenn非常有用:) – Salil 2010-05-29 09:40:58
对于你打算用作常量的任何字符串来说,这样做应该没问题吧? – 2015-02-19 21:37:49
你可以进一步烘干它:'a,b,c,d =%w(test)* 4' – nerfologist 2016-12-16 10:25:26
这样分配没有问题(a = b = c = d = 5
)。如果所有变量都需要具有相同的值,我个人更喜欢多次赋值。
这里的另一种方式:
a, b, c, d = [5] * 4
五件事四个变量? – 2010-05-28 13:36:53
@Donal:糟糕。我想这是多余的5人没有人想要的。 :( – 2010-05-28 13:51:34
我不使用红宝石好,所以这可能是一个可接受的成语,但a = b = c = d = 5
看起来很丑我。国际海事组织,a , b, c, d = 5, 5, 5, 5
看起来好多了。
5,5,5,5是不是太多重新编制? – 2014-02-21 15:04:37
@ArnoldRoa它比[5] * 4,IMO – drusepth 2014-03-28 12:48:04
如果感觉良好,就去做吧。
语言允许它,因为你发现,它的行为和你所期望的一样。我建议你应该问自己的唯一问题是表达性:代码告诉你它的目的是什么?
就我个人而言,我并不特别喜欢使用这个构造,而不是初始化为默认值,最好是零。理想情况下,初始化的变量都会有类似的用途,例如计数器。但是如果我有更多的类似用途的变量,我可能会考虑将它们声明为一种重复的形式,并将其重构为例如哈希。
+1稍微更易于维护,这是正确的答案。我不确定哪个表单更多习惯性的,但我只能想到在这种情况下需要这样一个任务的情况。 – 2010-05-28 13:49:23
这两个初始化表示不同的含义。 a = b = c = d = 5
表示“我的所有变量都应该初始化为相同的值,并且此值为5”。另一个,a, b, c, d = 5, 5, 5, 5
,意思是“我有一个变量列表,以及相应的init值列表”。
是你的逻辑,所有的变量应该总是相同的?然后第一个更好。如果不是,第二个可能会更好。另一个问题:你的4个变量列表是否全面?是否可能会向该组添加或删除另一个变量?如果是的话,我建议另一种变型,而不是:
a = 5
b = 5
c = 5
d = 5
一次,我被咬有一个。它今天可以为你节省一些键盘输入,但稍后你会咬你。正如@glenn所提到的,它创建了多个对同一个对象的引用。
例如:这适用于红宝石1.8
和1.9
> a = b = Array.new
=> []
> a.object_id == b.object_id
=> true
> a << 1
=> [1]
> b << 2
=> [1, 2]
你上面的例子中也能很好的完成''nil'和TRUE''FALSE' :) – MMachinegun 2014-02-13 11:42:29