这个问题在这里已经有一个答案:

假设我有以下红宝石代码:

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

我几乎在寻找 some_function 当参数2包含时返回true 全部 参数1中的元素。

有帮助吗?

解决方案

def f a,b
    (a-b).empty?
end

其他提示

从上一篇文章中

def f a,b
    (a-b).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 f a,b
    a&b == b
end

a&b 将返回两者中的所有元素 ab 然后我们检查一下是否等于 b

出于模棱两可的缘故:

def f a,b
    (a&b == a) || (a&b == b)
end
def f a,b
    tmp  = a.map(|i| b.include?(i))
    tmp.include?(false)
end
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top