Array slicing in Ruby: Erklärung für das unlogische Verhalten (entnommen aus Rubykoans.com)

Ging ich durch die übungen in Ruby Koans und ich war beeindruckt von den folgenden Ruby-quirk, fand ich wirklich unerklärliche:

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...

Also, warum ist array[5,0] nicht gleich array[4,0]? Gibt es einen Grund, warum array-slicing verhält sich dies seltsam, wenn Sie beginnen, auf die (Länge+1)th position??

Siehe auch Warum array.Scheibe Verhalten sich unterschiedlich (Länge, n)
sieht aus wie die erste Zahl ist der index zu Beginn an, die zweite Zahl gibt an, wie viele Elemente zu schneiden

InformationsquelleAutor Pascal Van Hecke | 2010-08-25

Schreibe einen Kommentar