static func < (Self, Self) -> Bool
static func <= (Self, Self) -> Bool
static func > (Self, Self) -> Bool
static func >= (Self, Self) -> Bool
<
, <=
, >=
, and >
.
関係演算子<
、<=
、>=
、そして>
を使って比較されるある型。
Availability
Technology
protocol Comparable
The Comparable
protocol is used for types that have an inherent order, such as numbers and strings. Many types in the standard library already conform to the Comparable
protocol. Add Comparable
conformance to your own custom types when you want to be able to compare instances using relational operators or use standard library methods that are designed for Comparable
types.
Comparable
プロトコルは、本来備わっている順番を持つ型、例えば数や文字列などで使われます。標準ライブラリの多くの型はすでにComparable
プロトコルに準拠します。あなたが関係演算子を使ってインスタンスの比較ができること、または Comparable
型のために設計される標準ライブラリメソッドを使うことを望む場合は、Comparable
準拠をあなた独自のあつらえの型に加えてください。
The most familiar use of relational operators is to compare numbers, as in the following example: 最もよく知られている関係演算子の使用は、数の比較に対してです、以下の例でのように:
You can use special versions of some sequence and collection operations when working with a Comparable
type. For example, if your array’s elements conform to Comparable
, you can call the sort()
method without using arguments to sort the elements of your array in ascending order.
あなたは、特別版のなんらかのシーケンスやコレクション演算をあるComparable
型を扱うときに使用できます。例えば、あなたの配列のもつ要素がComparable
に準拠するならば、あなたはsort()
メソッドを引数を使うことなく呼び出して、あなたの配列の要素を昇順にソートすることができます。
Types with Comparable conformance implement the less-than operator (<
) and the equal-to operator (==
). These two operations impose a strict total order on the values of a type, in which exactly one of the following must be true for any two values a
and b
:
Comparable準拠を持つ型は、より少ない演算子(<
)と同等演算子(==
)を実装します。これら2つの演算子は、ある型の値に全順序を課します、そこにおいて任意の2つの値a
とb
に対して、厳密に以下のうちの1つが真でなければなりません:
a == b
a < b
b < a
In addition, the following conditions must hold: 加えて、以下の条件が保持されなければなりません:
a < a
is always false
(Irreflexivity)
a < a
は常にfalse
(非反射)
a < b
implies !(b < a)
(Asymmetry)
a < b
は!(b < a)
を意味する(非対称)
a < b
and b < c
implies a < c
(Transitivity)
a < b
かつb < c
はa < c
を意味する(推移)
To add Comparable
conformance to your custom types, define the <
and ==
operators as static methods of your types. The ==
operator is a requirement of the Equatable
protocol, which Comparable
extends—see that protocol’s documentation for more information about equality in Swift. Because default implementations of the remainder of the relational operators are provided by the standard library, you’ll be able to use !=
, >
, <=
, and >=
with instances of your type without any further code.
Comparable
準拠をあなたのあつらえの型に加えるには、<
および==
演算子をあなたの型の静的メソッドとして定義してください。==
演算子は、Comparable
が拡張するEquatable
プロトコルの要件です — そのプロトコルの文書をSwiftにおける同等性についてのさらなる情報のために見てください。関係演算子の残りの省略時の実装は標準ライブラリによって提供されることから、あなたは!=
、>
、<=
、そして>=
をあなたの型のインスタンスにおいてなんらこれ以上のコード無しに使うことができます。
As an example, here’s an implementation of a Date
structure that stores the year, month, and day of a date:
例として、ある日付の年、月、そして日を格納するあるDate
構造体の実装がここにあります:
To add Comparable
conformance to Date
, first declare conformance to Comparable
and implement the <
operator function.
Comparable
準拠をDate
に加えるには、最初にComparable
への準拠を宣言して、<
演算子関数を実装してください。
This function uses the least specific nonmatching property of the date to determine the result of the comparison. For example, if the two year
properties are equal but the two month
properties are not, the date with the lesser value for month
is the lesser of the two dates.
この関数は、比較の結果を判定するのに、最小量となる特定の不一致日付プロパティを使います。例えば、2つのyear
プロパティは等しいけれども2つのmonth
プロパティは異なるならば、month
に対してより少ない値を持つ日付は2つの日付のうちより少ないものです。
Next, implement the ==
operator function, the requirement inherited from the Equatable
protocol.
次に、==
演算子関数、Equatable
プロトコルから継承される要件を実装してください。
Two Date
instances are equal if each of their corresponding properties is equal.
2つのDate
インスタンスは、それらの対応するプロパティの各々が等しいならば等しいです。
Now that Date
conforms to Comparable
, you can compare instances of the type with any of the relational operators. The following example compares the date of the first moon landing with the release of David Bowie’s song “Space Oddity”:
今やDate
はComparable
に準拠します、あなたはこの型のインスタンスを関係演算子のどれででも比較できます。以下の例は、最初の月面着陸の日付をデビッド・ボウイの歌「Space Oddity」のリリース日と比較します:
Note that the >
operator provided by the standard library is used in this example, not the <
operator implemented above.
標準ライブラリによって提供される>
演算子がこの例で使われることに注意してください、上で実装される<
演算子ではなしに。
Note 注意
A conforming type may contain a subset of values which are treated as exceptional—that is, values that are outside the domain of meaningful arguments for the purposes of the Comparable
protocol. For example, the special “not a number” value for floating-point types (Floating
) compares as neither less than, greater than, nor equal to any normal floating-point value. Exceptional values need not take part in the strict total order.
準拠している型は、普通でないものとして扱われる値の下位集合を含むでしょう — すなわち、Comparable
プロトコルの用途のための意味のある引数の領域の外側である値。例えば、浮動小数点型のための特別な「数でない」値(Floating
)は、何らかの通常の浮動小数点値とより少ないでも、より大きいでも、等しいでもないような比較をします。それら普通でない値は、全順序において役割を果たすには及びません。
static func < (Self, Self) -> Bool
static func <= (Self, Self) -> Bool
static func > (Self, Self) -> Bool
static func >= (Self, Self) -> Bool
static func ..< (Self, Self) -> Range<Self>
static func ... (Self, Self) -> ClosedRange<Self>
static func ... (Self) -> PartialRangeFrom<Self>
static func ... (Self) -> PartialRangeThrough<Self>
static func ..< (Self) -> PartialRangeUpTo<Self>
Comparable
elements using these comparative operators.
2つと6つの間のComparable
要素のタプルをそれらの比較演算を使って比較します。
func < ((), ()) -> Bool
func < <A, B>((A, B), (A, B)) -> Bool
func < <A, B, C>((A, B, C), (A, B, C)) -> Bool
func < <A, B, C, D>((A, B, C, D), (A, B, C, D)) -> Bool
func < <A, B, C, D, E>((A, B, C, D, E), (A, B, C, D, E)) -> Bool
func < <A, B, C, D, E, F>((A, B, C, D, E, F), (A, B, C, D, E, F)) -> Bool
func <= ((), ()) -> Bool
func <= <A, B>((A, B), (A, B)) -> Bool
func <= <A, B, C>((A, B, C), (A, B, C)) -> Bool
func <= <A, B, C, D>((A, B, C, D), (A, B, C, D)) -> Bool
func <= <A, B, C, D, E>((A, B, C, D, E), (A, B, C, D, E)) -> Bool
func <= <A, B, C, D, E, F>((A, B, C, D, E, F), (A, B, C, D, E, F)) -> Bool
func > ((), ()) -> Bool
func > <A, B>((A, B), (A, B)) -> Bool
func > <A, B, C>((A, B, C), (A, B, C)) -> Bool
func > <A, B, C, D>((A, B, C, D), (A, B, C, D)) -> Bool
func > <A, B, C, D, E>((A, B, C, D, E), (A, B, C, D, E)) -> Bool
func > <A, B, C, D, E, F>((A, B, C, D, E, F), (A, B, C, D, E, F)) -> Bool
func >= ((), ()) -> Bool
func >= <A, B>((A, B), (A, B)) -> Bool
func >= <A, B, C>((A, B, C), (A, B, C)) -> Bool
func >= <A, B, C, D>((A, B, C, D), (A, B, C, D)) -> Bool
func >= <A, B, C, D, E>((A, B, C, D, E), (A, B, C, D, E)) -> Bool
func >= <A, B, C, D, E, F>((A, B, C, D, E, F), (A, B, C, D, E, F)) -> Bool
ARConfidenceLevel
AnyIndex
AttributedString.Index
AttributedString.Runs.Index
CMFormatDescription.Extensions.Index
CMTime
Character
CollectionDifference.Index
Date
DateInterval
Dictionary.Index
DispatchQueue.SchedulerTimeType.Stride
DispatchTime
DispatchWallTime
FlattenSequence.Index
IndexPath
IndexSet.Index
LazyPrefixWhileCollection.Index
MLDataValue.DictionaryType.Index
Measurement
Decimal
NSFileProviderDomainVersion
NWTXTRecord.Index
Never
OSSignpostID
ObjectIdentifier
OperationQueue.SchedulerTimeType.Stride
ReversedCollection.Index
RunLoop.SchedulerTimeType.Stride
Set.Index
String
String.Index
Subscribers.Demand
TaskPriority
Unicode.CanonicalCombiningClass
Unicode.Scalar
Version
protocol Equatable
protocol Identifiable