Ruby数组删除时间

mwg9r5ms  于 2023-06-05  发布在  Ruby
关注(0)|答案(3)|浏览(158)

在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?

rqcrx0a6

rqcrx0a61#

因为array.sort不保存已排序的数组,它只是返回它。这意味着当你调用array.delete_at(2)时,数组仍然是[1,2,3,4,5,0]。我们要调用的是array.sort!,它将原始数组排序并修改为[0,1,2,3,4,5],并将2放在您期望找到它的位置。

b4lqfgs4

b4lqfgs42#

array,sort * 返回 * 一个新数组,它不修改原始数组。如果你想要一个可变的版本,那么你可以使用array.sort!。否则,你会写:

array = array.sort

但是,在这种情况下,你最好简单地:

array.sort!

还有...
如果第一个被认为是1,为什么数字3被删除而不是1?
Ruby中的数组是零索引的,即第一个索引为0。索引2(在包含0的排序数组中)将是2,而不是1。

mrfwxfqh

mrfwxfqh3#

array.sort不会改变数组。因此,当运行delete_at(2)时,数组仍然是[1,2,3,4,5,0]。要对数组进行排序和“保存”,请改用sort!

相关问题