(irb) a, b = 5
a => 5
b => nil
不应该是另一种方式吗?这里到底发生了什么?
答案 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的多重分配部分解释了该功能和几个示例。