Latest web development tutorials

スウィフト列挙

列挙は、単に、データ型であるが、これは、データ収集の共通の特性の組であるカスタム特定のデータを含んでのみデータ・タイプです。

客観的CとCに似スウィフト列挙構造、列挙関数:

  • クラスがインスタンス化してその値にアクセスすることができ、クラスで宣言されています。

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

  • あなたは、標準的な機能を提供するためのプロトコル(プロトコル)を観察することができます。

文法

スウィフト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とスウィフトが作成されているデフォルトの整数値を与えられません異なる列挙メンバー。 上記でDaysofaWeek例では、 SundayMonday……Saturday暗黙的に値が割り当てられません01……6 。 その代わりに、これらの部材自体はすでに明確に定義されている完全な列挙値持つDaysofaWeekタイプを。

var weekDay = DaysofaWeek.THURSDAY 

weekDayそれはかもしれタイプDaysofaWeek値を初期化することができるときに推論しました。 一度weekDayとして宣言されDaysofaWeek (。)、あなたは別のものにそれを設定するために、省略構文を使用することができDaysofaWeek値:

var weekDay = .THURSDAY 

ときはweekDayのタイプが知られている場合、その割り当てが再び列挙名を省略することができます。 明示的な型の列挙値を使用して、コードをより読みやすくなります。

これは、元の値に関連付けられた列挙値に分割することができます。

相関値と元の値の差

相関値 元の値
異なるタイプのデータ 同じデータタイプ
例:列挙型{10,0.8、「こんにちは」} 例:列挙型{10,35,50}
定数または変数に基づいて値を作成します。 値事前入力
あなたは新しいメンバーシップベースの列挙定数を作成したり、変数の相関値が設定され、あなたは時間を持っていないたびに、その値は異なる場合があります。 元の値は常に同じです

相関値

次の例では、我々は、列挙型の名前の学生を定義し、それが文字列型(String)を相関値関連する値の名前(整数、整数、整数、整数)、またはマークすることができます。

import Cocoa

enum Student{
    case Name(String)
    case Mark(Int,Int,Int)
}
var studDetails = Student.Name("w3big")
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)。")
}

上記プログラム実行出力は、次のとおりです。

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

元の値

元の値は、文字列、文字、または任意の整数または浮動小数点値とすることができます。 その列挙型の宣言の各元の値は一意である必要があります。

元の値が整数列挙型である場合には、各メンバーの明示的な割り当てなしに、スウィフトが自動的に割り当てられます。

元の整数値を使用する場合、例えば、割り当てられた暗黙の値を順次インクリメント。 最初の値が割り当てられていない場合、初期値は自動的にゼロに設定されます。

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。