如何在Ruby中设置固定数量的元素。
例如。 a=["a","b","c","d"]
将数组大小设置为3将输出
a=["a","b","cd"]
答案 0 :(得分:6)
如果你知道元素只是一个字符的字符串,你可以这样做:
a.join.split '', 3
否则:
a[0..1] + [a[2..-1].join]
或者也许:
a[0..1] << a[2..-1].join
答案 1 :(得分:3)
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]