我试图了解 splat 运算符如何range
在 Ruby 中使用。为此,在我的 IRB 中运行以下代码:
*a = (1..8)
#=> 1..8
当上面没问题时,下面发生了什么?意味着为什么 a 给[]
?
*a,b = (1..8)
#=> 1..8
b
#=> 1..8
a
#=> []
表示为什么b
给出[]?
a,*b = (1..8)
#=> 1..8
a
#=> 1..8
b
#=> []
下面发生了什么优先级Rvalues
?
a,*b = *(2..8),*3,*5
# => [2, 3, 4, 5, 6, 7, 8, 3, 5]
b
# => [3, 4, 5, 6, 7, 8, 3, 5]
a
# => 2
这是对 splat 运算符(*)的另一种尝试:-
虽然我知道在并行赋值中我们不能使用多个 splatted 变量,但为什么 splat 与 一起使用时不一样Rvalues
呢?
*a,*b = [1,2,3,4,5]
SyntaxError: (irb):1: syntax error, unexpected tSTAR
*a,*b = [1,2,3,4,5]
^
from /usr/bin/irb:12:in `<main>'
以上与预期一致。
a = *2,*3,*5
#=> [2, 3, 5]
但是无法理解上面的内容。