Ruby:包含在Array中的数组,任何顺序
假设我有以下Ruby代码:
array_1 = ['a', 'b'] array_2 = ['a', 'b', 'c'] some_function(array_1, array_2) # => True some_function(array_2, array_1) # => False some_function(['a', 'b'], ['a', 'd']) # => False some_function(['x', 'y'], array_2) # => False
当参数2包含参数1中的所有元素时,我几乎都在寻找some_function
来返回True。
def fa,b (ab).empty? end
从以前的post,
def fa,b (ab).empty? end
不会按照你期望的方式工作,例如:
a1 = [1, 2, 3, 4, 5, 6, 7, 8, 9] a2 = [2, 3, 5, 9] (a1-a2).empty? # returns true
然而,
a1-a2 # returns [1, 4, 6, 7, 8], not empty
因此f
返回false。
一个更准确的解决方案,如果你想要一个单线程将是:
def fa,b a&b == b end
a&b
将返回a&b
所有元素,然后我们检查它是否等于b
为了模棱两可的缘故:
def fa,b (a&b == a) || (a&b == b) end
def fa,b tmp = a.map(|i| b.include?(i)) tmp.include?(false) end