Ruby: 怎么判断一个数组是另一个数组的子集

如果没有重复的元素的话,可以用 Set

set = [1,2,3,4,5]
subset = [1,2]

执行效率高的写法:

(subset - (subset & set)).empty?

可读性高的写法:

subset.all? { |element| set.include?(element) }
require 'benchmark'

N = 1_000_000

Benchmark.bmbm do |x|
  x.report("fastest")  { N.times { (subset - (subset & set)).empty? } }
  x.report("readable") { N.times { subset.all? { |element| set.include?(element) } } }
end