在IRB提示:紅寶石數組中刪除在
array = [1,2,3,4,5]
array << 0
array.sort
[0,1,2,3,4,5]
我完全理解上述內容,但我這樣做時:
array.delete_at(2)
它在陣列中刪除3。 如果第一個被認爲是1,爲什麼數字3被刪除而不是數字1?
在IRB提示:紅寶石數組中刪除在
array = [1,2,3,4,5]
array << 0
array.sort
[0,1,2,3,4,5]
我完全理解上述內容,但我這樣做時:
array.delete_at(2)
它在陣列中刪除3。 如果第一個被認爲是1,爲什麼數字3被刪除而不是數字1?
由於array.sort
不保存排序的數組,它只是返回它。這意味着當您撥打array.delete_at(2)
時,您的陣列仍然是[1,2,3,4,5]
。你想要調用的是array.sort!
,它對你的原始數組進行排序和修改。
謝謝你們!上面的答案與下面的答案相同,因此第一個答案很清楚。琳達程序沒有提到有關「array.sort!」的信息 –
array.sort
不會更改您的陣列。所以當運行delete_at(2)
時,你的數組仍然是[1,2,3,4,5,0]
。要排序並「保存」您的陣列,請改爲使用sort!
。
array,sort
返回一個新的數組,它不會修改原始數組。如果你想要突變版本,那麼你使用array.sort!
。否則,你會寫:
array = array.sort
但是,在這種情況下,你只需用更好:
array.sort!
也...
如果第一個被認爲是1 ,爲什麼數字3被刪除而不是數字1?
陣列中的Ruby是零索引,即,第一索引爲0索引2(在排序後的數組,其包括0)。將2,而不是1
你確定3被刪除?它不得不刪除2而不是1 –
嗨。讓我重申一下:它刪除數組中的數字3。所以是的,數字3被刪除了。如果我鍵入:array.sort,它會給出:[0,1,2,4,5] –
你想'sort!'而不是'sort'。 – Voldemort