为什么表达式“a,b = 5”在Ruby中将a设置为5,但b设置为nil?

时间:2015-07-16 18:45:02

标签: ruby-on-rails ruby

(irb) a, b = 5
a => 5
b => nil

不应该是另一种方式吗?这里到底发生了什么?

3 个答案:

答案 0 :(得分:6)

当我写这篇文章时,我的同事发现了原因:

Ruby将a, b = 5视为a, b = 5, nil

在Python3中,抛出TypeError

答案 1 :(得分:2)

为了使用多次分配为b分配值,您必须为其赋予第二个值。

a, b = 5, 6

a = 5
b = 6

当您不提供第二个值时,Ruby会将b的值设为nil

答案 2 :(得分:1)

这是一项重要的Ruby功能,称为多重赋值。

多个赋值从表达式或数组执行多个赋值。这是一次分配多个变量的快捷方式。

如果您声明了三个变量,但只为其中两个变量赋值,那么第三个变量默认会收到nil

this documentation的多重分配部分解释了该功能和几个示例。