İçerik Tablosu
Array#shift Nedir?
Ruby’de, Array#shift
, bir dizinin ilk elemanını kaldıran ve döndüren bir metottur. Yıkıcı bir metottur, yani orijinal diziyi doğrudan değiştirir. Dizi boşsa, nil
döndürür.
Array#shift Nasıl Kullanılır?
Sözdizimi basittir:
my_array = [1, 2, 3, 4, 5]
first_element = my_array.shift
puts first_element # Çıktı: 1
puts my_array.inspect # Çıktı: [2, 3, 4, 5]
Burada, shift
, my_array
‘in başından 1 sayısını kaldırır ve first_element
değişkenine atar. Orijinal dizi artık kalıcı olarak değiştirilmiştir.
Örnek: Boş Dizi
empty_array = []
removed_element = empty_array.shift
puts removed_element # Çıktı: nil
puts empty_array.inspect # Çıktı: []
Örnek: shift Zincirleme
my_array = [1, 2, 3, 4, 5]
first = my_array.shift
second = my_array.shift
puts first # Çıktı: 1
puts second # Çıktı: 2
puts my_array.inspect # Çıktı: [3, 4, 5]
Örnek: shift
ile İterasyon
my_array = [1, 2, 3, 4, 5]
while element = my_array.shift
puts element
end
# Çıktı:
# 1
# 2
# 3
# 4
# 5
shift
‘e Alternatifler
Orijinal diziyi korumak istiyorsanız, shift
‘i çağırmadan önce bir kopya oluşturmak için Array#dup
kullanın. Alternatif olarak, eleman kaldırma üzerinde daha fazla kontrol için şu seçenekleri değerlendirin:
Array#slice!(0)
: İlk elemanı kaldırır ve döndürür.shift
‘e benzer ancak bir aralık belirterek birden fazla elemanın kaldırılmasına izin verir.Array#take(n)
: Orijinal diziyi değiştirmeden ilkn
elemanı döndürür.Array#drop(n)
: İlkn
eleman hariç tüm elemanları içeren yeni bir dizi döndürür.
Performans Hususları
Array#shift
‘in zaman karmaşıklığı O(n)’dir çünkü sonraki tüm elemanların bir pozisyon sola kaydırılması gerekir. Ancak, Ruby’nin uygulaması dinamik diziler kullandığından, verimli bellek yönetimi nedeniyle amortismanlı zaman karmaşıklığı genellikle O(1)’e yakındır. Büyük diziler için, shift
ve alternatifler arasındaki performans farkı fark edilir hale gelebilir. Çok büyük diziler için performans kritik ise, elemanları kaydırmayı önleyen alternatifleri (örneğin, bir numaralandırıcı kullanarak) göz önünde bulundurun.
Sonuç
Array#shift
, Ruby’de bir dizinin ilk elemanını kaldırmanın ve erişmenin kullanışlı bir yolunu sağlar. Yıkıcı doğasını ve mevcut alternatifleri anlamak, verimli ve sürdürülebilir kod yazmak için çok önemlidir. Orijinal diziyi korumanız gerekip gerekmediğini ve verilerin boyutunu göz önünde bulundurarak ihtiyaçlarınıza en uygun yöntemi seçin.