J'ai du mal à comprendre ce que font les méthodes shift et unshift de la classe Array dans Ruby. Quelqu'un peut-il m'aider à comprendre ce qu'ils font?
pushil est en haut, et shiftil sort à l'autre extrémité.
J'ai du mal à comprendre ce que font les méthodes shift et unshift de la classe Array dans Ruby. Quelqu'un peut-il m'aider à comprendre ce qu'ils font?
pushil est en haut, et shiftil sort à l'autre extrémité.
Réponses:
Consulter la documentation Ruby
Array.shift supprime le premier élément du tableau et le renvoie
a = [1,2,3]
puts a.shift
=> 1
puts a
=> [2, 3]
Unshift ajoute la valeur fournie au début du tableau, en déplaçant tous les autres éléments d'un
a=%w[b c d]
=> ["b", "c", "d"]
a.unshift("a")
=> ["a", "b", "c", "d"]
shiftet unshiftagir comme une pile FILO, pushet shiftagirait comme une file d'attente FIFO, à moins que je ne sois confus à propos de quelque chose.
shiftet unshiftagit de la même manière que popet push: ils sont destinés à utiliser des tableaux comme des piles auxquelles vous pouvez ajouter et supprimer des éléments (généralement un à la fois). La différence est juste que shiftet unshiftajouter / éléments éliminer au début d'un Array, en fait à décalage ing tous les autres éléments, tout popet pushajouter / éléments à remove la fin de la Array, préservant ainsi les autres indices des éléments.
Exemples:
# Spacing for clarity:
a = [2, 4, 8] # a => [2, 4, 8]
a.push(16, 32) # a => [2, 4, 8, 16, 32]
a.unshift(0, 1) # a => [0, 1, 2, 4, 8, 16, 32]
a.shift # a => [1, 2, 4, 8, 16, 32]
a.pop # a => [1, 2, 4, 8, 16]
Il saisit le premier élément, le supprime du tableau et renvoie l'élément supprimé. C'est fondamentalement une façon de traiter un tableau comme une pile: shiftc'est pop, unshiftc'est push.
popet pushsont aussi Arrayméthode, il ne faut pas faire de confusion. :-)
Si vous pouvez considérer le tableau comme une file d'attente de valeurs à traiter, alors vous pouvez prendre la valeur suivante (avant) et "décaler" l'autre valeur pour occuper l'espace rendu disponible. unshift remet des valeurs - peut-être que vous n'êtes pas prêt à en traiter certaines, ou que vous laisserez du code plus tard les gérer.
shift/unshiftsont commepush/popà l'autre extrémité du tableau, vous pouvez supprimer mentalement le «f» du nom des méthodes pour vous rappeler lequel «vide» les éléments et celui qui les «insère». :)