当我在ruby中有一个数组时,我可以在上面运行delete-if块。问题是它从数组中删除了元素。我想要相同的功能,只是不更改原始数组,而是返回一个新的数组,并删除对象。例如:myarr = ["foo", 5, 7, "bar"]newarr = myarr.delete_if { |e| e.is_a?(String) }会将[5,7]返回到newarr,但也会修改原始数组myarr。我想要的是myarr = ["foo", 5, 7, "bar"]newarr = myarr.soft_delete_if { |e| e.is_a?(String) }因此newarr将具有值[5,7],但myarr仍具有相同的值。有这样的东西吗?谢谢! 最佳答案 使用。> newarr = myarr.reject{ |e| e.is_a?(String) }=> [5, 7]> myarr=> ["foo", 5, 7, "bar"]还有一个名为reject的相关方法,其工作方式与select相同,只是它保留谓词返回true的元素,而不是拒绝它们。关于ruby-on-rails - ruby 软delete_if方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4538539/ 10-13 02:08