Frage Was bewirkt Ruby's Array # shift?


Mir fällt es schwer zu verstehen, was die Shift- und Unshift-Methoden der Array-Klasse in Ruby machen. Kann mir jemand helfen zu verstehen, was sie tun?


75
2017-09-15 14:31


Ursprung


Antworten:


Mit Blick auf die Ruby-Dokumentation

Array.shift entfernt das erste Element aus dem Array und gibt es zurück

a = [1,2,3] 
puts a.shift
 => 1 
puts a
 => [2, 3] 

Unshift verschiebt den bereitgestellten Wert an die Vorderseite des Arrays und verschiebt alle anderen Elemente um eins nach oben

a=%w[b c d]
 => ["b", "c", "d"] 
a.unshift("a")
 => ["a", "b", "c", "d"] 

83
2017-09-15 14:39



shift und unshift verhält sich in ähnlicher Weise wie pop und push: Sie sind dazu gedacht, Arrays als Stapel zu verwenden, an die Sie Elemente anhängen und entfernen können (normalerweise eine pro Zeit). Der Unterschied ist genau das shift und unshift Hinzufügen / Entfernen von Elementen am Anfang eines Array, tatsächlich Verschiebungalle anderen Elemente, während pop und push Hinzufügen / Entfernen von Elementen am Ende der Array, so dass die Indizes anderer Elemente erhalten bleiben.

Beispiele:

                      # 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]

45
2017-09-15 14:33



Es ergreift das erste Element, entfernt es aus dem Array und gibt das entfernte Element zurück. Es ist im Grunde eine Möglichkeit, ein Array wie einen Stapel zu behandeln: shift ist Pop, unshift ist Push.


8
2017-09-15 14:32



Wenn Sie sich das Array als eine Reihe von zu verarbeitenden Werten vorstellen können, können Sie den nächsten (vorderen) Wert übernehmen und die anderen Werte verschieben, um den verfügbaren Platz zu belegen. Unshift bringt Werte zurück - vielleicht sind Sie nicht bereit, einige von ihnen zu verarbeiten, oder lassen Sie etwas später Code damit umgehen.


2
2017-09-15 15:08



Es gibt das erste Element des Arrays zurück und entfernt es aus dem Array. Verschiebung die Elemente zurück an einem Ort.

So verschieben [1,2,3,4,5]

kehrt zurück 1, und legt das Array fest [2,3,4,5].

Mehr Hier.


1
2017-09-15 14:33