Как установить фиксированное количество элементов массива в Ruby - PullRequest
0 голосов
/ 21 декабря 2010

Как установить фиксированное количество элементов массива в Ruby.

например.a=["a","b","c","d"] Если установить размер массива 3, будет выведено

a=["a","b","cd"]

Ответы [ 2 ]

6 голосов
/ 21 декабря 2010

Если вы знали, что элементы были просто односимвольными строками, вы могли бы сделать что-то вроде:

a.join.split '', 3

В противном случае:

a[0..1] + [a[2..-1].join]

Или, возможно:

a[0..1] << a[2..-1].join
3 голосов
/ 21 декабря 2010
class Array
  def squeeze(n, &p)
    p = Proc.new {|xs| xs.join} unless p
    arr = self[0..n-2]
    arr << p.call(self[n-1..-1])
  end
end

a = ['a', 'b', 'c', 'd', 'e']
a.squeeze(3) # => ["a", "b", "cde"]

Требуется проверка границ, но вы поняли идею. Обратите внимание, что функция объединения может быть задана в качестве аргумента блока:

[1, 2, 3, 4].squeeze(3) {|xs| xs.inject {|acc,x| acc+x}} # => [1, 2, 7]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...