如果我想从数组中删除一些元素并返回自身,下面是foo1和foo2(当只有一个要删除的元素时,foo2)正确的方法吗?
class Array
def foo1 *args; delete_if{|x| args.include?(x)} end
def foo2 arg; delete(arg); self end
end
答案 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)
这里的优点是它可以完全链接(与.delete
或ary - odds
不同),因此您可以执行以下操作:
ary.-(odds).average
您的眼睛一旦发现减号,就比.delete_if
构造更容易阅读,理解和视觉识别错别字。
如果您可能得到nil而不是数组,它也可以与Ruby的安全导航运算符&.
一起很好地使用。那是您不能轻易地减去数组。
maybe_array&.-(odds)&.average