Ruby Programming

Maîtriser Array#shift en Ruby

Spread the love

Table des matières

Qu’est-ce que Array#shift ?

En Ruby, Array#shift est une méthode qui supprime et renvoie le premier élément d’un tableau. C’est une méthode destructive, ce qui signifie qu’elle modifie directement le tableau d’origine. Si le tableau est vide, elle renvoie nil.

Comment utiliser Array#shift

La syntaxe est simple :


my_array = [1, 2, 3, 4, 5]
first_element = my_array.shift

puts first_element  # Sortie : 1
puts my_array.inspect # Sortie : [2, 3, 4, 5]

Ici, shift supprime le nombre 1 du début de my_array et l’affecte à first_element. Le tableau d’origine est maintenant définitivement modifié.

Exemple : Tableau vide


empty_array = []
removed_element = empty_array.shift
puts removed_element  # Sortie : nil
puts empty_array.inspect # Sortie : []

Exemple : Enchaînement des décalages


my_array = [1, 2, 3, 4, 5]
first = my_array.shift
second = my_array.shift
puts first  # Sortie : 1
puts second # Sortie : 2
puts my_array.inspect # Sortie : [3, 4, 5]

Exemple : Itération avec shift


my_array = [1, 2, 3, 4, 5]
while element = my_array.shift
  puts element
end
# Sortie :
# 1
# 2
# 3
# 4
# 5

Alternatives à shift

Si vous devez préserver le tableau d’origine, utilisez Array#dup pour créer une copie avant d’appeler shift. Sinon, pour un contrôle plus précis de la suppression d’éléments, considérez ces options :

  • Array#slice!(0) : Supprime et renvoie le premier élément. Similaire à shift mais permet de supprimer plus d’un élément en spécifiant une plage.
  • Array#take(n) : Renvoie les n premiers éléments sans modifier le tableau d’origine.
  • Array#drop(n) : Renvoie un nouveau tableau contenant tous les éléments sauf les n premiers éléments.

Considérations sur les performances

La complexité temporelle de Array#shift est O(n) car tous les éléments suivants doivent être décalés d’une position vers la gauche. Cependant, l’implémentation Ruby utilise des tableaux dynamiques, ce qui rend la complexité temporelle amortie souvent plus proche de O(1) grâce à une gestion efficace de la mémoire. Pour les grands tableaux, la différence de performance entre shift et les alternatives peut devenir perceptible. Si les performances sont critiques pour les très grands tableaux, considérez les alternatives qui évitent le décalage des éléments (comme l’utilisation d’un énumérateur).

Conclusion

Array#shift fournit un moyen pratique de supprimer et d’accéder au premier élément d’un tableau en Ruby. Comprendre sa nature destructive et les alternatives disponibles est crucial pour écrire un code efficace et maintenable. Choisissez la méthode qui convient le mieux à vos besoins, en tenant compte du fait que vous devez préserver ou non le tableau d’origine et de la taille des données.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *