a = [ 'a' ]
b = [ 'b' ]
def c
return [ 'c' ], [ 'd' ]
end
a, b += C# -> would be awesome, but gives syntax error
a, b = a + c.first, b + c.last # clunky and will call method twice...
# desired result
#
a == [ 'a', 'c' ]
b == [ 'b', 'd' ]
Сейчас я часто пишу:Есть ли ruby oneliner для конкатенации вложенных массивов без временных копий?
t, tt = c
a += t
b += tt
, но это своего рода уродливые, если вы спросите меня.
Редактировать: Одноэлементные массивы, похоже, смутили некоторых людей, поскольку несколько ответов ниже просто не отвечают на вопрос. Я сделал это более ясно, позволяя каждому массиву иметь как минимум 2 элемента.
Редактировать2: Я подал feature request с рубиновым сердечником для реализации сложных назначений на разрушенных массивах.
Пожалуйста, никогда не изменять ответы, которые, как вы это сделали , Не стесняйтесь публиковать свой собственный ответ в случае, который, по вашему мнению, никто не предоставил, соответствует вашим потребностям. – mudasobwa
Хорошо, не стоит беспокоиться, но на самом деле он ответил бы на вопрос с помощью редактирования ... теперь он не отвечает на этот вопрос .... – nus
Это не ваша забота, кроме того, что вы повторно задали вопрос после все представленные ответы были даны. У вас есть в основном три варианта: принять ответ, перевернуть/пропустить его и проигнорировать. Вам не разрешают отвечать на вопросы, даже если вы думаете, что это улучшит их. – mudasobwa