我需要一个以数组数组作为参数的函数,然后返回所有子数组的交集。如果有的话,我怎么能改进以下代码?
class Array
def grand_intersection
if self.length > 1
filters = self[1..-1]
filters.reduce(self[0]) {|start, filter| start & filter}
else
self
end
end
end
P.S。我不太关心处理其内容不会响应#& - 该方法不会向用户公开。
答案 0 :(得分:4)
class Array
def grand_intersection
self.reduce :&
end
end
[[1,2,3,4,5], [2,3,4], [1,2,4,5]].grand_intersection
#=> [2, 4]