Protocol

SetAlgebra

A type that provides mathematical set operations. 数学的な集合演算を提供する型。

Declaration 宣言

protocol SetAlgebra

Overview 概要

You use types that conform to the SetAlgebra 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 SetAlgebra conformance using the OptionSet protocol. See those types for more information. あなたがSetAlgebraプロトコルに準拠する型を使うのは、あなたが帰属について能率的にテストするか、数学的集合演算たとえば交叉、合併、そして差分を必要とする場合です。標準ライブラリにおいて、あなたはSet型を何らかのハッシュ型の要素で使うことができます、またはあなたはSetAlgebra準拠を持つビットマスクをOptionSetプロトコルを使って簡単に作成することができます。さらなる情報としてそれらの型を見てください。

Conforming to the SetAlgebra Protocol SetAlgebraプロトコルに準拠する

When implementing a custom type that conforms to the SetAlgebra 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 SetAlgebra protocol, x and y are instances of S, and e is of type S.Element—the type that the set holds. SetAlgebraプロトコルに準拠するあつらえの型を実装する場合、あなたは必須イニシャライザとメソッドを実装する必要があります。継承されたメソッドを適切に働かせるためには、準拠する型は以下の原則に応じる必要があります。SSetAlgebraプロトコルに準拠するあつらえの型、xySのインスタンス、そしてeは型S.Element — 集合が保持する型、と仮定します。

  • S() == [] S() == [] (空の集合は空の配列リテラルと同等です)

  • x.intersection(x) == x

  • x.intersection([]) == []

  • x.union(x) == x

  • x.union([]) == x

  • x.contains(e) implies x.union(y).contains(e) x.contains(e) は暗黙的に x.union(y).contains(e)

  • x.union(y).contains(e) implies x.contains(e) || y.contains(e) x.union(y).contains(e) は暗黙的に x.contains(e) || y.contains(e)

  • x.contains(e) && y.contains(e) if and only if x.intersection(y).contains(e) x.contains(e) && y.contains(e) は次の場合に限ります x.intersection(y).contains(e)

  • x.isSubset(of: y) implies x.union(y) == y x.isSubset(of: y) は暗黙的に x.union(y) == y

  • x.isSuperset(of: y) implies x.union(y) == x x.isSuperset(of: y) は暗黙的に x.union(y) == x

  • x.isSubset(of: y) if and only if y.isSuperset(of: x) x.isSubset(of: y) は次の場合に限ります y.isSuperset(of: x)

  • x.isStrictSuperset(of: y) if and only if x.isSuperset(of: y) && x != y x.isStrictSuperset(of: y) は次の場合に限ります x.isSuperset(of: y) && x != y

  • x.isStrictSubset(of: y) if and only if x.isSubset(of: y) && x != y x.isStrictSubset(of: y) は次の場合に限ります x.isSubset(of: y) && x != y

Topics 話題

Creating a Set 集合の作成

Testing for Membership 帰属をテストする

Adding and Removing Elements 要素の追加と削除

Combining Sets 集合を結合する

Comparing Sets 集合を比較する

Initializers イニシャライザ

Instance Properties 様々なインスタンスプロパティ

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

Relationships 関係

Inherits From 継承元

Inherited By 継承される先