ruby - 带括号和 splat 运算符的并行赋值

标签 ruby parallel-assignment

我明白了:

x,(y,z)=1,*[2,3]

x # => 1
y # => 2
z # => nil

我想知道为什么 z 的值为 nil

最佳答案

x, (y, z) = 1, *[2, 3]

右侧的 splat * 是内联扩展的,所以它等同于:

x, (y, z) = 1, 2, 3

左边带括号的列表被视为嵌套赋值,所以它等价于:

x = 1
y, z = 2

3 被丢弃,而 z 被分配给 nil

关于ruby - 带括号和 splat 运算符的并行赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30678698/

相关文章:

ruby - 非破坏性force_encoding?

ruby-on-rails - CSV 下载对象而不是实际值 Rails

ruby-on-rails - ObjectSpace#allocation_class_path 未按预期工作

ruby - 我可以在 gemfile 中强制 gem 的依赖项吗?

ruby - 使用并行赋值交换数组元素

swift: if-let 并行赋值

ruby - 包含带有变量的 Rspec 示例