17

次の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を返すことをかなり探しています。

4

3 に答える 3

42
def f a,b
    (a-b).empty?
end
于 2010-10-09T19:21:59.003 に答える
1

以前の投稿から、

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

したがって、ffalseを返します。

ワンライナーが必要な場合のより正確な解決策は次のとおりです。

def f a,b
    a&b == b
end

a&ba両方にあるすべての要素を返し、bそれが等しいかどうかを確認しますb

あいまいさのために:

def f a,b
    (a&b == a) || (a&b == b)
end
于 2015-10-14T21:32:58.590 に答える
-2
def f a,b
    tmp  = a.map(|i| b.include?(i))
    tmp.include?(false)
end
于 2012-12-31T09:09:24.200 に答える