Ruby Koans关于数组赋值-非并行与并行赋值区别

6

在完成rubykoans.com时,我遇到了about_array_assignment.rb中的这两段代码

你如何判断第一段是非并行赋值而第二段是只有一个变量的并行赋值呢?对我来说,除了命名不同之外,这两段代码看起来几乎相同。

  4   def test_non_parallel_assignment
  5     names = ["John", "Smith"]
  6     assert_equal ["John", "Smith"], names
  7   end

 45   def test_parallel_assignment_with_one_variable
 46     first_name, = ["John", "Smith"]
 47     assert_equal 'John', first_name
 48   end
1个回答

9
在第二个示例中,变量后面有一个逗号。并行赋值通常列出几个逗号分隔的变量,但只使用一个变量也是允许的(但这仍然需要逗号以便将其与常规赋值分开)。

2
我想补充一下,它也可以写成first_name, * = ["John", "Smith"],这可能会使意图更清晰。那是(我认为)规范的方式,但如果需要,您可以省略splat。 - marcus erronius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接