1

私はRuby(およびプログラミング全般)に不慣れで、この問題に対する答えを見つけるために大量のドキュメント、ハウツー、およびSOの質問を読んでいますが、これまでのところ運がありません.

整数の配列があり、オブジェクトの整数の 1 つを変数に保存して、後でそのオブジェクトを配列から削除しようとしています。私がこれまでに持っているもの:

array = [3, 5, 1, 2, 6, 9]
objToDel = array[3]
array.delete_at(objToDel)
array

これにより、配列内の「1」が削除されます...代わりに「2」を削除してください。これは、配列の実際の 3 番目の要素ではなく、配列 [3] を指す変数が「2」を指しているために発生することがわかっています。スライス方法も試してみましたが、役に立ちませんでした。

では、変数をコンテンツの代わりに要素のインデックスと等しくすることは可能ですか? 配列をハッシュに変換せずにこれは可能ですか?

前もって感謝します!

4

2 に答える 2

1

確かに、変数にインデックスを割り当てるだけです。

index = 3
array.delete_at(index) # => 2
array # => [3, 5, 1, 6, 9]

deleteこのメソッドを使用して、オブジェクトを直接削除することもできます。

object_to_delete = 2
array.delete(object_to_delete) # => 2
array # => [3, 5, 1, 6, 9]

これにより、配列内のオブジェクトのすべてのインスタンスが削除されることに注意してください。これは、希望するものではない可能性があります。

于 2012-06-10T17:48:01.283 に答える
1

あなたの言葉でそれを保つために、これを試してください:

array = [3, 5, 1, 2, 6, 9]
objToDel = 3
array.delete_at(objToDel)
array

幸運を。

于 2012-06-11T03:24:49.917 に答える