Protocol

CaseIterable

A type that provides a collection of all of its values. それの値の全てからなるコレクションを提供する型。

Declaration 宣言

protocol CaseIterable

Overview 概要

Types that conform to the CaseIterable protocol are typically enumerations without associated values. When using a CaseIterable type, you can access a collection of all of the type’s cases by using the type’s allCases property. CaseIterableプロトコルに準拠する型は、概して関連値を持たない列挙です。CaseIterable型を使う場合、あなたはその型のもつケース節の全てからなるコレクションにアクセスすることが、その型のもつallCasesプロパティを使うことで可能です。

For example, the CompassDirection enumeration declared in this example conforms to CaseIterable. You access the number of cases and the cases themselves through CompassDirection.allCases. 例えば、この例で定義されるCompassDirection列挙はCaseIterableに準拠します。あなたは、ケース節の数およびケース節それ自体にアクセスすることがCompassDirection.allCasesを通して可能です。


enum CompassDirection: CaseIterable {
    case north, south, east, west
}


print("There are \(CompassDirection.allCases.count) directions.")
// Prints "There are 4 directions."
let caseList = CompassDirection.allCases
                               .map({ "\($0)" })
                               .joined(separator: ", ")
// caseList == "north, south, east, west"

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

The compiler can automatically provide an implementation of the CaseIterable requirements for any enumeration without associated values or @available attributes on its cases. The synthesized allCases collection provides the cases in order of their declaration. コンパイラは、自動的にCaseIterable要件の実装を提供することが、関連値または@available属性をそれのケース節上で持たないあらゆる列挙に対して可能です。合成されたallCasesコレクションは、ケース節をそれらの宣言の順に提供します。

You can take advantage of this compiler support when defining your own custom enumeration by declaring conformance to CaseIterable in the enumeration’s original declaration. The CompassDirection example above demonstrates this automatic implementation. あなたはこのコンパイラサポートを、あなた独自のあつらえの列挙をCaseIterableへの準拠をその列挙の元の宣言において宣言することによって定義する場合に利用できます。上のCompassDirection例は、この自動実装を実演します。

Topics 話題

Accessing Cases ケース節にアクセスする

See Also 参照

Raw Representation 生の表現