Domanda

Trivial usando un ciclo for o each_with_index, chiedendosi solo se ci fosse un modo migliore per farlo usando la sintassi di Ruby.

Devo creare un nuovo array che è la derivata dell'array di origine, ad esempio:

for(int i = 1; i < oldArray.length; i++)
{
    newArray[i] = oldArray[i] - oldArray[i-1]
}
È stato utile?

Soluzione

old_array.each_cons(2).map{|x, y| y - x}

Enumerable # each_cons chiamato con una dimensione del blocco di 2 ma senza blocco restituisce un Enumeratore che eseguirà l'iterazione su ciascuna coppia di elementi consecutivi in ?? old_array . Quindi usiamo solo map per eseguire una sottrazione su ciascuna coppia.

Altri suggerimenti

last=0
new = old.map{|v|x=v-last;last=v;x}[1..-1]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top