Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 删除1后输出为[2][1,2],但输出为[2][2]_Ruby On Rails_Ruby_Ruby On Rails 3_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 删除1后输出为[2][1,2],但输出为[2][2]

Ruby on rails 删除1后输出为[2][1,2],但输出为[2][2],ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 4,删除1后,我需要输出为[2][1,2],但输出为[2][2]: def array_dup(n,obj) array= [] for i in 1..n print array.push(obj)[i] end return array end print (array_dup(5,'hi')) c = array_dup(5, [1,2]) puts print c c[0].delete(1) puts c print c puts 输出应该如下所示: ["hi

删除1后,我需要输出为
[2][1,2]
,但输出为
[2][2]

def array_dup(n,obj)

  array= []
  for i in 1..n
   print array.push(obj)[i]
 end

 return array
end

print (array_dup(5,'hi'))
c = array_dup(5, [1,2])
puts
print c

c[0].delete(1)
puts c
print c

puts
输出应该如下所示:

["hi", "hi", "hi", "hi", "hi"]
[[2], [1, 2], [1, 2], [1, 2], [1, 2]]
但是,它看起来像:

["hi", "hi", "hi", "hi", "hi"]
[[1, 2], [1, 2], [1, 2], [1, 2], [1, 2]]2
2
2
2
2
[[2], [2], [2], [2], [2]]

尝试此解决方案,它可能看起来很大,但正在工作:

test_array = []
c.flatten[1..-1].each_slice(2).to_a.reverse_each {|x| test_array << x.reverse!}
puts test_array

请修复代码中的缩进。这让我很难帮助你。我只是修复了它,请检查。我修复了它,使它更可读。我理解OP的要求。。。我们可以重新打开它吗?这里有一个简短的答案,以防它没有重新打开:只需将
push(obj)
更改为
push(obj.dup)
。在第一种情况下,您正在插入对同一对象的引用,而实际上您希望它们是分开的。有点讽刺的是,当
dup
一直是您所需要的时,您却将该方法命名为
array\u dup
[[2], [1, 2], [1, 2], [1, 2], [1, 2]]