Посмотрите причину здесь:
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>'
<<
метод ожидает только один argument.So теперь, как ниже знак (*
) является оператором, который будет создавать 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]
Не будет ли 'a + b' более интуитивным для этого варианта использования? – scones
вы можете сделать это + = b –