4

x = ['a', 'b', 'c']配列と。があるとしましょうy。たとえば、の2番目の要素をに移動する簡単な方法はありxますyか?つまり、最終的にxは、であり['a', 'c']yです['b']

4

4 に答える 4

9

この例の特別なコード。他のアレイでは機能しない可能性があります。実際に要素を移動する代わりに、古い配列を分解して2つの新しい配列を作成しましょう。

x = ['a', 'b', 'c']

x, y = x.partition {|i| i != 'b'}

x # => ["a", "c"]
y # => ["b"]

アプローチはあなたのdelete_at状況にとっておそらくより良いです、しかし、あなたが知っている、それは代替案を知ることは良いことです:)

于 2012-11-13T10:43:42.877 に答える
4

うん、それはこのようになります:

y.push x.delete_at(1)

delete_at呼び出された配列から指定されたインデックスを持つ要素を削除し、そのオブジェクトを返します

于 2012-11-13T10:42:03.240 に答える
4

はい。特定の要素の場合:

y = []
y << x.delete('b')

特定のインデックスの場合:

y = []
y << x.delete_at(1)

この種のものはよく文書化されています、ところで。

于 2012-11-13T10:42:12.260 に答える
2
x = ['a', 'b', 'c']
y = []

インデックスで削除するには:

y << x.delete_at(1)

オブジェクトで削除するには:

y << x.delete('b')
于 2012-11-13T10:42:46.753 に答える