Ich schreibe eine Methode, die variable Längen von Arrays und komprimiert und konvertiert sie zu passenden Array-Längen.Gibt es in Ruby eine Art unsichtbare Array-Terminierung?
Die Methode akzeptiert eine Array-Länge von 50 bis 126. .. und konvertiert sie basierend auf Parametern beim Aufruf. Dies bedeutet, dass ich dynamisch auf Bereiche zugreife, die beim Methodenaufruf angegeben werden. Dies bedeutet auch, dass ich auf Indizes des Arrays zugreifen werde, die nicht existieren werden. Zusätzlich dazu kann der Bereich, auf den ich zugreife, gleich sein. Dies ist, wo mein Problem liegt: es scheint, dass die Abschluss Tasche eines Arrays seltsam verhält, wenn er mit einem Bereich zugreifen, wie auf jedem anderen inexistent Index gegen
>> a = [0, 1, 2, 3, 4]
# => [0, 1, 2, 3, 4]
>> a[5]
# => nil
>> a[4..4]
# => [4]
>> a[6..6]
# => nil
>> a[5..5]
# => [] <------GGRAAAAAhhh!!! Thought you were nil
>> a[5..7]
# => [] <-------you too
>> a[6..7]
# => nil <-----but you are behaving
Weiß jemand, warum dies geschieht? Es ist ein zusätzlicher Test gegen ein leeres Array für meinen Code, aber ich bin neugieriger, nachdem ich diesen Bug den ganzen Tag lang in meiner Rails-App verfolgt habe. FWIW Ich bin mit Ruby-1.8.6 auf Mac OS X, Patchlevel 114
Mr Matt gewann um eine Minute, aber ich wählte beide antworten. Danke Jungs – BushyMark