SORU
25 AĞUSTOS 2010, ÇARŞAMBA


Dizi Ruby Dilimleme: mantıksız davranışları için bir açıklama için (rubykoans.com alınan arıyorum

Ruby Koans egzersizlere bakıyordum ve gerçekten açıklanamaz bulduğum aşağıdaki Ruby cilvesi olduğunu anladım:

array = [:peanut, :butter, :and, :jelly]

array[0]     #=> :peanut    #OK!
array[0,1]   #=> [:peanut]  #OK!
array[0,2]   #=> [:peanut, :butter]  #OK!
array[0,0]   #=> []    #OK!
array[2]     #=> :and  #OK!
array[2,2]   #=> [:and, :jelly]  #OK!
array[2,20]  #=> [:and, :jelly]  #OK!
array[4]     #=> nil  #OK!
array[4,0]   #=> []   #HUH??  Why's that?
array[4,100] #=> []   #Still HUH, but consistent with previous one
array[5]     #=> nil  #consistent with array[4] #=> nil  
array[5,0]   #=> nil  #WOW.  Now I don't understand anything anymore...

Neden array[5,0] array[4,0] eşit değil mi? Var dizi Dilimleme kurmak için, bu garip davrandığını herhangi bir nedenle (boy 1)thpozisyonu??

CEVAP
25 AĞUSTOS 2010, ÇARŞAMBA


Bana mantıklı geliyor. Dilim ilk sayısını tanımlayabilmek için eleman ama öğeler arasındaki yerleri belirlemek değil kiaçıklıklı(ve elemanları kendilerini değil):

  :peanut   :butter   :and   :jelly
0         1         2      3        4

yani, 4 0 elemanları istemek hala dizi içinde, zar zor; dizinin boş kalacaksın. Ama dizin dilim. bu yüzden 5, oradan da yoktur.

Dilim yok, ama Endeksi (array[4]), aslında elemanları kendilerini işaret ederek, endeksleri sadece 3-0.

Temelde demek istediğim Dilimleme ve dizin oluşturma iki farklı ameliyat ve diğer bir davranışı çıkarım sorun burada yatıyor.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • esnathesinger

    esnathesinge

    6 NİSAN 2009
  • Slave Boy Films - Fandom from a Galaxy Far Far Away

    Slave Boy Fi

    12 HAZİRAN 2009
  • sWooZie

    sWooZie

    9 ŞUBAT 2006