文書   >   Swift   >   Swift 標準ライブラリ   >   Collections   >   Range   >   max(by:)
インスタンスメソッド
max(by:)
与えられた predicate (述語) を要素間の比較として使用して、シーケンス内の最大要素を返します。
宣言
@warn_unqualified_access func max(by areInIncreasingOrder: (Bound, Bound) throws -> Bool) rethrows -> Bound?
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。
パラメータ
areInIncreasingOrder | 最初の引数が 2 番目の引数の前に順序付けされるべき場合は true を返す predicate (述語)。それ以外の場合は false。 |
戻り値
シーケンスが空でない場合、シーケンスの最大要素。それ以外の場合は、nil。
議論
predicate (述語) は要素に対して 厳密に弱い順序 でなければなりません。つまり、任意の要素 a、b、および c に対して、以下の条件が成り立たなければなりません。
- areInIncreasingOrder(a, a) は常に false です。(非再帰性)
- areInIncreasingOrder(a, b) と areInIncreasingOrder(b, c) が共に true の場合, areInIncreasingOrder(a, c) も true です。 (推移比較可能性)
- 2 つの要素が、いずれも predicate (述語) に従って他の要素の前に順序付けされていない場合、比較できない ものです。a と b が比較できず、b と c が比較できない場合、a と c も比較できません。(推移比較不能性)
この例では、辞書上で max(by:) メソッドを使用して、最高値を持つキー値のペアを検索する方法を示します。
let hues = ["Heliotrope": 296, "Coral": 16, "Aquamarine": 156]
let greatestHue = hues.max { a, b in a.value < b.value }
print(greatestHue)
// Prints "Optional(("Heliotrope", 296))"
複雑さ:O(n)、ここで n はシーケンスの長さです。
以下も見よ
要素の検索
func first(where: (Bound) -> Bool) -> Bound?
与えられた predicate (述語) を満たすシーケンスの最初の要素を返します。
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。
func firstIndex(of: Bound) -> Bound?
指定された値がコレクションに現れる最初のインデックスを返します。
Element が Equatable に準拠している場合に使用可能です。
func firstIndex(where: (Bound) -> Bool) -> Bound?
コレクションの要素が与えられた predicate (述語) を満たす最初のインデックスを返します。
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。
func last(where: (Bound) -> Bool) -> Bound?
与えられた predicate (述語) を満たすシーケンスの最後の要素を返します。
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。
func lastIndex(of: Bound) -> Bound?
指定された値がコレクションに現れる最後のインデックスを返します。
Element が Equatable に準拠している場合に使用可能です。
func lastIndex(where: (Bound) -> Bool) -> Bound?
与えられた predicate (述語) に一致するコレクション内の最後の要素のインデックスを返します。
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。
シーケンス内の最小要素を返します。
Element が Comparable に準拠している場合使用可能です。
func min(by: (Bound, Bound) -> Bool) -> Bound?
与えられた predicate (述語) を要素間の比較として使用して、シーケンス内の最小要素を返します。
Bound が Strideable に準拠し、Bound.Stride が SignedInteger に準拠する場合に使用可能です。
シーケンス内の最大要素を返します。
Element が Comparable に準拠している場合使用可能です。