1

我在 Ruby 中使用数组作为类似于链表的东西。因此我必须ary = [1,2,3] 插入一个我做的节点ary.insert(2,99)导致[1,2,99,3]

现在的问题是:我将如何做相反的事情?我希望存在一个函数ary.extract(2)可以返回99并将我的数组保持在状态[1,2,3]

4

2 回答 2

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] 

第二个版本的小问题:它将删除所有出现的值,以防有重复。

于 2012-12-02T19:57:38.690 回答
0

slice会成功的:

a = [1,2,99,3]
v = a.slice! 2

p v
# => 99

p a
# => [1, 2, 3]
于 2012-12-02T19:55:15.447 回答