执行我的代码我遇到了一些我不太了解的困难(我在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数组时,我得到一个删除值为0的数组。我不明白为什么因为这个数组是在检测项目之前创建的,所以值shuold在其中,为什么不呢? Ruby中的操作顺序是什么?如何复制该数组并使其在下一部分代码中有用?
答案 0 :(得分:1)
arr
中的temp_group_data
和arr
上的delete_at(0)
是相同的数组。这是以多种不同方式访问的相同数据。
以下是正在发生的事情的简化示例:
x = []
y = [:a, :b]
x << y
p x #=> [[:a, :b]]
y.delete_at(0)
p x #=> [[:b]]
最简单的改变就是在将arr
放入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
{{1}}