Instance Method インスタンスメソッド

contains(where:)

Returns a Boolean value indicating whether the sequence contains an element that satisfies the given predicate. 指定された述部を満足させるある要素をシーケンスが含むかどうかを指し示すブール値を返します。

Declaration 宣言

func contains(where predicate: ((T.Value?, U.Value?, V.Value?, W.Value?, Range<AttributedString.Index>)) throws -> Bool) rethrows -> Bool

Parameters パラメータ

predicate

A closure that takes an element of the sequence as its argument and returns a Boolean value that indicates whether the passed element represents a match. あるクロージャ、それはこのシーケンスの1つの要素をそれの引数として取り、渡された要素がある合致を表すものであるかどうかを指し示すブール値を返します。

Return Value 戻り値

true if the sequence contains an element that satisfies predicate; otherwise, false. このシーケンスがpredicateを満たす要素を含むならばtrue;そうでなければ、false

Discussion 議論

You can use the predicate to check for an element of a type that doesn’t conform to the Equatable protocol, such as the HTTPResponse enumeration in this example. あなたは述部を使って、Equatableプロトコルに準拠しない型、例えばこの例でのHTTPResponse列挙などの要素に対して調べることができます。


enum HTTPResponse {
    case ok
    case error(Int)
}


let lastThreeResponses: [HTTPResponse] = [.ok, .ok, .error(404)]
let hadError = lastThreeResponses.contains { element in
    if case .error = element {
        return true
    } else {
        return false
    }
}
// 'hadError' == true

Alternatively, a predicate can be satisfied by a range of Equatable elements or a general condition. This example shows how you can check an array for an expense greater than $100. あるいは、述部は、Equatable要素のある範囲またはある一般的条件によって満たされることができます。この例は、どのようにあなたが$100より大きい出費についてある配列を調べることができるかを示します。


let expenses = [21.37, 55.21, 9.32, 10.18, 388.77, 11.41]
let hasBigPurchase = expenses.contains { $0 > 100 }
// 'hasBigPurchase' == true

Complexity: O(n), where n is the length of the sequence. 計算量:O(n)、ここでnはシーケンスの長さです。