Объединение строк из массива в Ruby

#ruby

#ruby

Вопрос:

В Coffeescript я могу это сделать:

 [one..., two] = [1, 2, 3, 4, 5]
# one = [1, 2, 3, 4]
# two = 5
  

Есть ли какой-либо способ сделать это (oneliner) в Ruby?

Редактировать

Я знаю, что могу это сделать:

 one = [1, 2, 3, 4, 5]
two = one.slice!(-1) 
  

РЕДАКТИРОВАТЬ 2

Oneliner может выглядеть следующим образом:

 two = (one = [1, 2, 3, 4, 5]).slice!(-1)
  

но это кажется мне слишком уродливым.

Комментарии:

1. означает ли это, что one все переменные равны n-1?

2. да, я отредактировал вопрос, чтобы быть более понятным.

Ответ №1:

Это должно сделать это:

 *one, two = [1, 2, 3, 4, 5]
one
# => [1, 2, 3, 4]
two
# => 5
  

Вы можете увидеть еще несколько объяснений splat здесь и array destructuring здесь

Комментарии:

1. Спасибо, принято, потому что этот ответ содержит больше объяснений

Ответ №2:

 irb(main):001:0> a = [1,2,3,4,5]
=> [1, 2, 3, 4, 5]
irb(main):002:0> *one, two = a
=> [1, 2, 3, 4, 5]
irb(main):003:0> one
=> [1, 2, 3, 4]
irb(main):004:0> two
=> 5
  

Комментарии:

1. 🙂 Спасибо, ребята… теперь я не знаю, чей ответ я должен принять … оба одинаковые и почти одновременно