相交的非空数组

key*_*ons 4 ruby

我有三个我想要相交的数组,但我想忽略那些空的数组.

这段代码看起来太冗长了.有更有效的方法吗?

if a.empty? && b.empty?
  abc = c
elsif a.empty? && c.empty?
  abc = b
elsif b.empty? && c.empty?
  abc = a
elsif a.empty?
  abc = b & c
elsif b.empty?
  abc = a & c
elsif c.empty?
  abc = a & b
else
  abc = a & b & c
end
Run Code Online (Sandbox Code Playgroud)

edg*_*ner 11

怎么样

abc = [a,b,c].reject(&:empty?).reduce(:&)
Run Code Online (Sandbox Code Playgroud)

第一部分,[a,b,c]将您的数组放入数组中.第二个位在每个元素上reject运行empty?,如果结果为true则拒绝它,返回一个数组,其中删除了空数组.最后一部分,reduce运行相当于你的,a & b & c但由于我们在上一步中丢弃了所有空数组,因此你不会得到一个空结果.