首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ruby的并行赋值比简单赋值

ruby的并行赋值比简单赋值
EN

Stack Overflow用户
提问于 2013-05-06 14:56:51
回答 2查看 46关注 0票数 0

以下内容之间是否有区别:

1.

代码语言:javascript
复制
> lines, codelines, total_lines, total_codelines = 0, 0, 0, 0
=> [0, 0, 0, 0]

2.

代码语言:javascript
复制
> lines, codelines, total_lines, total_codelines = 0
=> 0

如果是,那么在什么情况下应该使用它们中的哪一个?

编辑还有第三种方法:

代码语言:javascript
复制
    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

如果是数组

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-06 15:22:26

这是有区别的。

1.

代码语言:javascript
复制
lines, codelines, total_lines, total_codelines = 0, 0, 0, 0

右边的值和左边的变量一样多。每个值都将分配给每个变量。

2.

代码语言:javascript
复制
lines, codelines, total_lines, total_codelines = 0

右侧的值不像左侧的变量那么多。缺少的值将作为nil进行补充。lines将成为0,其余的将成为nil。你没有理由像这样使用赋值。

当您想要使用右侧值数量较少的多个变量时,一个典型的情况是当您有一个数组时,您不知道它有多少个元素。

代码语言:javascript
复制
a, b, *c = some_array

在上面的例子中,根据some_arrayabc的长度不同,会分配不同的值。

票数 1
EN

Stack Overflow用户

发布于 2013-05-06 15:18:38

这两个示例之间的区别在于,第二个示例仅将0赋值给lines

代码语言:javascript
复制
lines, codelines, total_lines, total_codelines = 0,0,0,0

codelines #=> 0

而当并行赋值中的右值的数量小于左值的数量时:

代码语言:javascript
复制
lines, codelines, total_lines, total_codelines = 0

codelines #=> nil

剩余值使用nil赋值

因此,第二种类型的并行赋值没有实际意义,除非您需要在特定范围内使用nil初始化变量;例如,迭代外部的计数器。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16393555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档