看看这里的原因:
a = [1, 2, 3, 4]
b = [5, 6, 7]
p a.<<(*b)
# ~> -:3:in `<<': wrong number of arguments (3 for 1) (ArgumentError)
# ~> from -:3:in `<main>'
<<
方法只需要一个参数。所以现在如下所示 splat( *
) 是一个运算符,它将创建,不期望5,6,7
哪个方法,而是只需要一个对象。因此 Ruby 的设计之前<<
不允许。*
b
a = [1, 2, 3, 4]
b = [5, 6, 7]
p a << *
# ~> -:3: syntax error, unexpected *
a = [1, 2, 3, 4]
b = [5, 6, 7]
p a << *b
# ~> -:3: syntax error, unexpected *
# ~> p a << *b
# ~> ^
这就是为什么 2 个合法错误:
也许你可以使用 -
a = [1, 2, 3, 4]
b = [5, 6, 7]
p a.push(*b)
# >> [1, 2, 3, 4, 5, 6, 7]