Ruby'de Array sınıfının shift ve unshift yöntemlerinin ne yaptığını anlamakta zorlanıyorum. Biri ne yaptıklarını anlamama yardım edebilir mi?
pushen üste ve shiftdiğer ucuna.
Ruby'de Array sınıfının shift ve unshift yöntemlerinin ne yaptığını anlamakta zorlanıyorum. Biri ne yaptıklarını anlamama yardım edebilir mi?
pushen üste ve shiftdiğer ucuna.
Yanıtlar:
Ruby Belgelerine Bakmak
Array.shift, diziden ilk öğeyi kaldırır ve döndürür
a = [1,2,3]
puts a.shift
=> 1
puts a
=> [2, 3]
Kaydırma kaldır, sağlanan değeri dizinin önüne ekleyerek diğer tüm öğeleri bir yukarı taşır
a=%w[b c d]
=> ["b", "c", "d"]
a.unshift("a")
=> ["a", "b", "c", "d"]
shiftve unshiftbir FILO yığını gibi davranır pushve shiftbir şey hakkında kafam karışmazsa bir FIFO kuyruğu gibi davranırım.
shiftve unshiftbenzer bir şekilde hareket eder popve push: onlar ekleme hangi için yığınlarının ve kaldırma elemanları (zaman başına genellikle bir) gibi kullanım dizileri kastedilmektedir. Fark sadece budur shiftve unshiftbir başında / kaldırma elemanları eklemek Arrayaslında vardiya tüm diğer unsurları ing iken popve pushsonunda / kaldırma elemanları eklemek Arrayböylece diğer elemanların indeksleri koruyarak.
Örnekler:
# 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]
İlk öğeyi alır, diziden çıkarır ve kaldırılan öğeyi döndürür. Temelde bir diziyi yığın gibi ele almanın bir yolu: shiftpoptur, unshiftitmedir.
popve pushaynı zamanda Arrayyöntem olduğu için, kafa karışıklığının yapılmaması gerektiğine işaret ediyordum . :-)
Dizinin işlenecek bir değerler sırası olduğunu düşünebiliyorsanız, bir sonraki (ön) değeri alabilir ve diğer değeri "kaydırarak" kullanılabilir olan alanı kaplayabilirsiniz. unshift, değerleri geri koyar - belki bazılarını işlemeye hazır değilsiniz veya daha sonra bazı kodların bunları işlemesine izin vereceksiniz.
shift/unshiftgibi olduğunu öğrendiğinizde,push/pophangi öğelerin 'döküldüğünü' ve hangisinin onları 'eklediğini' hatırlamak için yöntemlerin adından 'f' harfini zihinsel olarak bırakabilirsiniz. :)