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

  • bashirsultani

    bashirsultan

    22 Mart 2010
  • Blunty

    Blunty

    13 Mart 2006
  • sWooZie

    sWooZie

    9 ŞUBAT 2006