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

  • HSmasteryoda .

    HSmasteryoda

    22 Ocak 2010
  • Māris Zaharovs

    Māris Zahar

    28 Mayıs 2008
  • William Sledd

    William Sled

    24 EYLÜL 2006