以下内容之间是否有区别:
1.
> lines, codelines, total_lines, total_codelines = 0, 0, 0, 0
=> [0, 0, 0, 0]2.
> lines, codelines, total_lines, total_codelines = 0
=> 0如果是,那么在什么情况下应该使用它们中的哪一个?
编辑还有第三种方法:
lines = codelines = total_lines = total_codelines = 0
> lines = codelines = total_lines = total_codelines = 0
=> 0
irb(main):016:0> lines
=> 0
irb(main):017:0> codelines
=> 0
irb(main):018:0> total_lines
=> 0
irb(main):019:0> total_codelines如果是数组
0> a = b = { }; a[:a] = 6
=> 6
irb(main):023:0> b = 3
=> 3
irb(main):024:0> a
=> {:a=>6}
irb(main):025:0> a = 10
=> 10
irb(main):026:0> b
=> 3
> a.object_id
=> 21
irb(main):028:0> b.object_id
=> 7发布于 2013-05-06 15:22:26
这是有区别的。
1.
lines, codelines, total_lines, total_codelines = 0, 0, 0, 0右边的值和左边的变量一样多。每个值都将分配给每个变量。
2.
lines, codelines, total_lines, total_codelines = 0右侧的值不像左侧的变量那么多。缺少的值将作为nil进行补充。lines将成为0,其余的将成为nil。你没有理由像这样使用赋值。
当您想要使用右侧值数量较少的多个变量时,一个典型的情况是当您有一个数组时,您不知道它有多少个元素。
a, b, *c = some_array在上面的例子中,根据some_array、a、b、c的长度不同,会分配不同的值。
发布于 2013-05-06 15:18:38
这两个示例之间的区别在于,第二个示例仅将0赋值给lines。
lines, codelines, total_lines, total_codelines = 0,0,0,0
codelines #=> 0而当并行赋值中的右值的数量小于左值的数量时:
lines, codelines, total_lines, total_codelines = 0
codelines #=> nil剩余值使用nil赋值
因此,第二种类型的并行赋值没有实际意义,除非您需要在特定范围内使用nil初始化变量;例如,迭代外部的计数器。
https://stackoverflow.com/questions/16393555
复制相似问题