我在 Ruby 中使用数组作为类似于链表的东西。因此我必须ary = [1,2,3]
插入一个我做的节点ary.insert(2,99)
导致[1,2,99,3]
现在的问题是:我将如何做相反的事情?我希望存在一个函数ary.extract(2)
可以返回99
并将我的数组保持在状态[1,2,3]
我在 Ruby 中使用数组作为类似于链表的东西。因此我必须ary = [1,2,3]
插入一个我做的节点ary.insert(2,99)
导致[1,2,99,3]
现在的问题是:我将如何做相反的事情?我希望存在一个函数ary.extract(2)
可以返回99
并将我的数组保持在状态[1,2,3]
你的意思是像delete_at?
1.9.3p125 :017 > ary = [1,2,3]
=> [1, 2, 3]
1.9.3p125 :018 > ary.insert(2,99)
=> [1, 2, 99, 3]
1.9.3p125 :019 > ary.delete_at(2)
=> 99
1.9.3p125 :020 > ary
=> [1, 2, 3]
1.9.3p125 :021 >
或者,如果您想按值而不是索引,则可以使用delete:
1.9.3p125 :021 > ary = [1,2,3]
=> [1, 2, 3]
1.9.3p125 :022 > ary.insert(2,99)
=> [1, 2, 99, 3]
1.9.3p125 :023 > ary.delete(99)
=> 99
1.9.3p125 :024 > ary
=> [1, 2, 3]
第二个版本的小问题:它将删除所有出现的值,以防有重复。
slice
会成功的:
a = [1,2,99,3]
v = a.slice! 2
p v
# => 99
p a
# => [1, 2, 3]