Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.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 从返回self的数组中删除_Ruby - Fatal编程技术网

Ruby 从返回self的数组中删除

Ruby 从返回self的数组中删除,ruby,Ruby,如果我想从数组中删除一些元素并返回自身,下面的foo1和foo2(当只有一个元素要删除时为foo2)是正确的方法吗 class Array def foo1 *args; delete_if{|x| args.include?(x)} end def foo2 arg; delete(arg); self end end 这有点难看,但减号函数的作用很简单,从一个数组中减去另一个数组: ary = [1, 2, 99, 3] ary.-([99]) 或 这里的优点是它是完全可

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

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

这有点难看,但减号函数的作用很简单,从一个数组中减去另一个数组:

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

这里的优点是它是完全可链接的(不同于
.delete
ari-赔率
),因此您可以执行以下操作:

ary.-(odds).average
一旦你的眼睛找到了负号,阅读、理解和视觉识别打字错误就比
容易得多。如果
结构,请删除

如果你得到的是nil而不是数组,那么Ruby的安全导航操作符,
&.
,也可以很好地使用它。这是用减法数组做不到的

maybe_array&.-(odds)&.average

似乎您可以只传递一个数组来删除_if,而不使用猴子修补数组[1,2,3]。如果([2,4])返回错误,则删除_if。实际上,我想要的是self-=args
odds = [1, 3, 5, 7, 9, 99]
ary.-(odds)
ary.-(odds).average
maybe_array&.-(odds)&.average