Ruby Koans about_array_assignment - 非平行与平行分配歧视

Zen*_*nce 5 ruby arrays

通过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
Run Code Online (Sandbox Code Playgroud)

Aas*_*set 8

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

  • +1.我想补充一点,它也可以写成`first_name,*= ["John","Smith"]`,这可能会使意图更清晰.这是(我认为)规范的方式,但如果需要,你可以留下splat. (2认同)