2017-02-15 3 views
0

私のコードを行う私はかなり理解していないいくつかの困難に遭遇しました(私はRubyで非常に新しいです)。この配列は、アイテムをdeteting前に作成されるので、これは私が0で削除された値の配列を取得例Rubyでの操作の流れ

temp = [] 
temp_groups_data = [] 
search_text_user = %r{AD-|Domain} 
groups_data.each do |arr| 
    temp_groups_data << arr 
    arr.delete_at(0) 
    arr.each do |el| 
    temp << (el) unless el =~ search_text_user 
    end 
end 

私は、コードの次の部分でtemp_groups_data配列を使用しようとしているである私はなぜ理解していませんそれで価値はそれに収まるので、なぜそうではありませんか? Rubyの動作シーケンスは何ですか?その配列を複製してコードの次の部分でどのように役立つか?

+0

にそれを置く前arrをコピーするだろうか?フォーマットを見ずにフォローするのはちょっと難しいです。また、あなたが達成しようとしていること/最終結果は何であるべきかを説明できますか?ルビには多くのショートカットがあり、これを表現する方法はおそらく短くて洗練された方法でしょう。 – Glyoko

+0

groups_dataの配列 'groups_data = [[" group1 "、" user_1 "、" user_3 "]、" group3 "、" user_1 "]、[" group4 "、" user_2 "]] ' コードの次の部分でその配列でその配列を使用するが、私は上記のコードのように0で削除された項目を持つ新しい配列を取得する。 – mila002

答えて

1

temp_group_dataarrとあなたがdelete_at(0)を呼び出すarr同じ配列されています。複数の異なる方法で同じデータにアクセスします。

ここで何が起こっているかの簡単な例です:

x = [] 
y = [:a, :b] 
x << y 
p x #=> [[:a, :b]] 
y.delete_at(0) 
p x #=> [[:b]] 

最も簡単な変更はちょうどあなたが `groups_data`がどのように見えるかを私たちに示してもらえtemp_groups_data

temp = [] 
temp_groups_data = [] 
search_text_user = %r{AD-|Domain} 
groups_data.each do |arr| 
    temp_groups_data << arr.dup # this right here 
    arr.delete_at(0) 
    arr.each do |el| 
    temp << (el) unless el =~ search_text_user 
    end 
end 
+0

それは仕事です。ですから、もし私がtemp_groups_data = groups_data.dupのような操作を理解すれば、各繰り返しの前に同じ配列が生成されますか?次回オブジェクトを複製する際に覚えておくべきことは、もっと複雑な配列やハッシュを意味しますか? – mila002

+0

[この質問](http://stackoverflow.com/questions/38841444/using-self-dup-but-failing-rspec-test-to-not-modify-original-array)と[それに私の答え] (http://stackoverflow.com/questions/38841444/using-self-dup-but-failing-rspec-test-to-not-modify-original-array/38841559#38841559)、私より良いことを説明するのに役立つかもしれませんコメントで行うことができます。 – philomory

関連する問題