假设我有以下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。
发布于 2010-10-10 03:21:59
def f a,b
(a-b).empty?
end
发布于 2015-10-15 05:32:59
在上一篇文章中,
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
将返回a
和b
中的所有元素,然后我们检查它是否等于b
为了不明确起见:
def f a,b
(a&b == a) || (a&b == b)
end
发布于 2012-12-31 17:09:24
def f a,b
tmp = a.map(|i| b.include?(i))
tmp.include?(false)
end
https://stackoverflow.com/questions/3897525
复制相似问题