Comment définir un nombre fixe d'éléments d'un tableau dans Ruby.Comment définir un nombre fixe d'éléments de tableau dans Ruby
par ex. a=["a","b","c","d"]
taille du tableau de réglage à 3 génèrerait
a=["a","b","cd"]
Comment définir un nombre fixe d'éléments d'un tableau dans Ruby.Comment définir un nombre fixe d'éléments de tableau dans Ruby
par ex. a=["a","b","c","d"]
taille du tableau de réglage à 3 génèrerait
a=["a","b","cd"]
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"]
Il a besoin de bornes de contrôle, mais vous voyez l'idée. Notez que la « combinaison » fonction peut être donnée comme argument de bloc:
[1, 2, 3, 4].squeeze(3) {|xs| xs.inject {|acc,x| acc+x}} # => [1, 2, 7]
C'est très bon, il n'y a pas d'implémentation native dans la classe Ruby Array qui fait cela, j'ai déjà vu quelque chose comme ça mais je ne le trouve plus. – Dejan
Si vous saviez les éléments étaient seulement des chaînes d'un seul caractère, vous pourriez faire quelque chose comme:
a.join.split '', 3
Dans le cas contraire:
a[0..1] + [a[2..-1].join]
Ou peut-être:
a[0..1] << a[2..-1].join
+1 pour # 1. Nice et concis sans bruit visuel. –
Pouvez-vous clarifier votre question? Voulez-vous dire que, dans votre exemple, les 3e et 4e éléments sont concaténés? – Dogweather
Oui, ils sont concaténés, puisque je réduis le nombre d'éléments dans le tableau. – Dejan