我在Ruby中使用一个类似于链表的数组。
我有ary = [1,2,3]
要插入节点,我会ary.insert(2,99)
生成[1,2,99,3]
现在的问题是:
我该怎么做?
我希望存在一个函数ary.extract(2)
,它将返回99
并将我的数组保留在状态[1,2,3]
答案 0 :(得分:1)
你的意思是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]
第二个版本的小问题:如果有重复项,它将删除所有出现的值。
答案 1 :(得分:0)
slice
可以解决问题:
a = [1,2,99,3]
v = a.slice! 2
p v
# => 99
p a
# => [1, 2, 3]