init()
Overview 概要
You use types that conform to the Set
protocol when you need efficient membership tests or mathematical set operations such as intersection, union, and subtraction. In the standard library, you can use the Set
type with elements of any hashable type, or you can easily create bit masks with Set
conformance using the Option
protocol. See those types for more information.
あなたがSet
プロトコルに準拠する型を使うのは、あなたが帰属について能率的にテストするか、数学的集合演算たとえば交叉、合併、そして差分を必要とする場合です。標準ライブラリにおいて、あなたはSet
型を何らかのハッシュ型の要素で使うことができます、またはあなたはSet
準拠を持つビットマスクをOption
プロトコルを使って簡単に作成することができます。さらなる情報としてそれらの型を見てください。
Note 注意
Unlike ordinary set types, the Element
type of an Option
is identical to the Option
type itself. The Set
protocol is specifically designed to accommodate both kinds of set.
普通の集合型とは違い、あるOption
のElement
型は、Option
型自体と全く同じです。Set
プロトコルは、とりわけ両方の種類の集合に配慮するように設計されます。
Conforming to the SetAlgebra Protocol SetAlgebraプロトコルに準拠する
When implementing a custom type that conforms to the Set
protocol, you must implement the required initializers and methods. For the inherited methods to work properly, conforming types must meet the following axioms. Assume that S
is a custom type that conforms to the Set
protocol, x
and y
are instances of S
, and e
is of type S
—the type that the set holds.
Set
プロトコルに準拠するあつらえの型を実装する場合、あなたは必須イニシャライザとメソッドを実装する必要があります。継承されたメソッドを適切に働かせるためには、準拠する型は以下の原則に応じる必要があります。S
はSet
プロトコルに準拠するあつらえの型、x
とy
はS
のインスタンス、そしてe
は型S
— 集合が保持する型、と仮定します。
S() == [] S() == [] (空の集合は空の配列リテラルと同等です)
x
.intersection(x) == x x
.intersection([]) == [] x
.union(x) == x x
.union([]) == x x
implies.contains(e) x
.union(y).contains(e) x
は暗黙的に.contains(e) x
.union(y).contains(e) x
implies.union(y).contains(e) x
.contains(e) || y .contains(e) x
は暗黙的に.union(y).contains(e) x
.contains(e) || y .contains(e) x
if and only if.contains(e) && y .contains(e) x
.intersection(y).contains(e) x
は次の場合に限ります.contains(e) && y .contains(e) x
.intersection(y).contains(e) x
implies.is Subset(of: y) x
.union(y) == y x
は暗黙的に.is Subset(of: y) x
.union(y) == y x
implies.is Superset(of: y) x
.union(y) == x x
は暗黙的に.is Superset(of: y) x
.union(y) == x x
if and only if.is Subset(of: y) y
.is Superset(of: x) x
は次の場合に限ります.is Subset(of: y) y
.is Superset(of: x) x
if and only if.is Strict Superset(of: y) x
.is Superset(of: y) && x != y x
は次の場合に限ります.is Strict Superset(of: y) x
.is Superset(of: y) && x != y x
if and only if.is Strict Subset(of: y) x
.is Subset(of: y) && x != y x
は次の場合に限ります.is Strict Subset(of: y) x
.is Subset(of: y) && x != y