Swift 列挙型


簡単に言うと、列挙型もデータ型ですが、このデータ型には、カスタマイズされた特定のデータのみが含まれており、共通の特性を持つデータのコレクションです。

Swift の列挙は、Objective C および C の構造に似ています。列挙の機能は次のとおりです。

  • それはクラス内で宣言され、その値はクラスをインスタンス化することでアクセスできます。

  • 列挙では、初期メンバー値を提供するコンストラクター (初期化子) を定義することもでき、その機能は元の実装に基づいて拡張できます。

  • プロトコルに準拠して標準機能を提供できます。

構文

Swift で enum キーワードを使用して列挙を作成し、その定義全体を中括弧のペア内に置きます:

enum enumname {
   // 枚举定义放在这里
}

たとえば、週を表す次の列挙を定義します:

import Cocoa

// 定义枚举
enum DaysofaWeek {
    case Sunday
    case Monday
    case TUESDAY
    case WEDNESDAY
    case THURSDAY
    case FRIDAY
    case Saturday
}

var weekDay = DaysofaWeek.THURSDAY
weekDay = .THURSDAY
switch weekDay
{
case .Sunday:
    print("星期天")
case .Monday:
    print("星期一")
case .TUESDAY:
    print("星期二")
case .WEDNESDAY:
    print("星期三")
case .THURSDAY:
    print("星期四")
case .FRIDAY:
    print("星期五")
case .Saturday:
    print("星期六")
}

上記のプログラム出力結果は次のとおりです:

星期四

列挙で定義された値 (SundayMonday……Saturday)是这个枚举的成员值(或成员)。case キーワードなどは、行内の新しいメンバー値が定義されることを示します。

注: C や Objective-C とは異なり、Swift 列挙メンバーには、作成時にデフォルトの整数値が割り当てられません。上記の DaysofaWeek の例では、SundayMonday...Saturday です。値 01...、および 6 は暗黙的に割り当てられません。代わりに、これらの列挙メンバー自体が完全な値を持ち、これらの値は明確に定義された DaysofaWeek 型です。 DaysofaWeek例子中,SundayMonday……Saturday不会隐式地赋值为01……6。相反,这些枚举成员本身就有完备的值,这些值是已经明确定义好的DaysofaWeek类型。

var weekDay = DaysofaWeek.THURSDAY

weekDay的类型可以在它被DaysofaWeek的一个可能值初始化时推断出来。一旦weekDay被声明为一个DaysofaWeek,你可以使用一个缩写语法(.)将其设置为另一个DaysofaWeek的值:

var weekDay = .THURSDAY

weekDay

import Cocoa

enum Student{
    case Name(String)
    case Mark(Int,Int,Int)
}
var studDetails = Student.Name("php")
var studMarks = Student.Mark(98,97,95)
switch studMarks {
case .Name(let studName):
    print("学生的名字是: \(studName)。")
case .Mark(let Mark1, let Mark2, let Mark3):
    print("学生的成绩是: \(Mark1),\(Mark2),\(Mark3)。")
}

weekDay の型は、DaysofaWeek の可能な値の 1 つで初期化されるときに推測できます。 weekDayDaysofaWeek として宣言したら、短縮構文 (.) を使用して別の DaysofaWeek の値に設定できます:

学生的成绩是: 98,97,95。

weekDay の型がわかっている場合は、再度値を割り当てるときに列挙名を省略できます。明示的に型指定された列挙値を使用すると、コードが読みやすくなります。

列挙は、関連する値とプリミティブな値に分類できます。 相関値と元の値の違い相関値元の値異なるデータ型同じデータ型例: enum {10,0.8,"Hello"} 例: enum {10,35,50}定数または変数に基づく値の作成事前設定された値関連する値は、列挙型メンバーに基づいて新しい定数または変数を作成する場合です。その値は、これを行うたびに異なる可能性があります。 元の値は常に同じです
🎜🎜🎜

関連値

次の例では、Student という名前の列挙型を定義します。これは、Name の関連値 (Int、Int、Int、Int)、または Mark 値の文字列型 (String) になります。

import Cocoa

enum Month: Int {
    case January = 1, February, March, April, May, June, July, August, September, October, November, December
}

let yearMonth = Month.May.rawValue
print("数字月份为: \(yearMonth)。")

上記のプログラムの実行の出力結果は次のとおりです:

数字月份为: 5。

元の値

元の値は、文字列、文字、または任意の整数または浮動小数点値です。各プリミティブ値は、その列挙宣言内で一意である必要があります。

元の値が整数の列挙である場合、各メンバーに明示的に値を割り当てる必要はなく、Swift が自動的に値を割り当てます。


たとえば、プリミティブ値として整数を使用する場合、暗黙的な代入の値は順次 1 ずつインクリメントされます。最初の値に初期値が割り当てられていない場合は、自動的に 0 に設定されます。


rrreee

上記のプログラムの実行の出力結果は次のとおりです:

rrreee