Ruby on rails 在一行中合并数组并从旧数组中删除内容
我正在调用一个方法,希望返回一个合并数组。它在if语句中返回,因此只返回最后一行。我希望它既能合并(通过Ruby on rails 在一行中合并数组并从旧数组中删除内容,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在调用一个方法,希望返回一个合并数组。它在if语句中返回,因此只返回最后一行。我希望它既能合并(通过.concat)@old_array到@new_array,又能删除同一行中@old_array的内容。我该怎么做呢 if test == @good_test @new_array.concat(@old_array) #I want it to return this @old_array = []. #while also deleting this
.concat
)@old_array
到@new_array
,又能删除同一行中@old_array
的内容。我该怎么做呢
if test == @good_test
@new_array.concat(@old_array) #I want it to return this
@old_array = []. #while also deleting this
end
您可以使用数组删除由索引和长度或范围给定的元素,并返回从数组中删除的元素:
def do_it(new_array, old_array)
if true
new_array.concat(old_array.slice!(0..-1))
end
end
a = [1, 2]
b = [3, 4]
do_it(a, b) # => [1, 2, 3, 4]
a # => [1, 2, 3, 4]
b # => []
如果您的ruby版本中没有end-less范围,您可以使用-1
作为结束:
old_array.slice!(0..-1)
在源代码中,看起来它将创建一个新数组,并将所有元素复制到该数组中,然后清除现有数组,然后返回新数组。有效率的不是真的,你问什么?是。您可以使用数组删除由索引和长度或范围给定的元素,并返回从数组中删除的元素:
def do_it(new_array, old_array)
if true
new_array.concat(old_array.slice!(0..-1))
end
end
a = [1, 2]
b = [3, 4]
do_it(a, b) # => [1, 2, 3, 4]
a # => [1, 2, 3, 4]
b # => []
如果您的ruby版本中没有end-less范围,您可以使用-1
作为结束:
old_array.slice!(0..-1)
在源代码中,看起来它将创建一个新数组,并将所有元素复制到该数组中,然后清除现有数组,然后返回新数组。有效率的不是真的,你问什么?是。添加包含返回值的第三行,即
@new\u array
@new\u array,@old\u array=[@new\u array+@old\u array]
您的问题不清楚。您说要“从旧数组中删除内容”,但代码并不是这样做的@old\u array=[]
不会删除@old\u array
引用的对象的内容,它会分配一个新数组。@new\u array.concat(@old\u array)@old_array=[]另一种方式-@new_array.concat(@old_array)。点击{@old_array.clear}
添加包含返回值的第三行,即@new_array
@new_array,@old_array=[@new_array+@old_array]
您的问题不清楚。您说要“从旧数组中删除内容”,但代码并不是这样做的@old\u array=[]
不会删除@old\u array
引用的对象的内容,它会分配一个新数组。@new\u array.concat(@old\u array)@old_array=[]另一种方式-@new_array.concat(@old_array)。点击{@old_array.clear}