从数组中删除返回self

时间:2011-02-23 17:10:09

标签: ruby

如果我想从数组中删除一些元素并返回自身,下面是foo1和foo2(当只有一个要删除的元素时,foo2)正确的方法吗?

class Array
    def foo1 *args; delete_if{|x| args.include?(x)} end
    def foo2 arg; delete(arg); self end
end

3 个答案:

答案 0 :(得分:2)

class Array
 def foo3 (*args); self - args; end
end

答案 1 :(得分:0)

array.reject{|element| element == value_of_element_to_be_deleted}

答案 2 :(得分:0)

这有点丑陋,但是减号函数简明扼要,可以从另一个数组中减去一个数组:

ary = [1, 2, 99, 3]
ary.-([99])

odds = [1, 3, 5, 7, 9, 99]
ary.-(odds)

这里的优点是它可以完全链接(与.deleteary - odds不同),因此您可以执行以下操作:

ary.-(odds).average

您的眼睛一旦发现减号,就比.delete_if构造更容易阅读,理解和视觉识别错别字。

如果您可能得到nil而不是数组,它也可以与Ruby的安全导航运算符&.一起很好地使用。那是您不能轻易地减去数组。

maybe_array&.-(odds)&.average