Swift:基礎(十七)列挙
2984 ワード
Swift列挙
列挙は簡単に言えばデータ型でもありますが、このデータ型にはカスタムの特定のデータのみが含まれており、共通の特性を持つデータのセットです.
Swiftの列挙はObjective CとCの構造に似ており、列挙の機能は以下の通りである.クラスに宣言され、クラスをインスタンス化してその値にアクセスできます. の列挙は、初期メンバー値を提供するために構造関数(initializers)を定義することもできる.元の実装に基づいて機能を拡張できます. は、標準的な機能を提供するためにプロトコル(protocols)を遵守することができる.
構文
Swiftではenumキーワードを使用して列挙を作成し、定義全体を括弧のペアに配置します.
たとえば、週を表す次の列挙を定義します.
以上のプログラムの実行出力結果は以下の通りです.
列挙で定義された値(Sunday、Monday、......、Saturdayなど)は、この列挙されたメンバー値(またはメンバー)です.caseキーワードは、新しいメンバー値が定義されることを示します.
注意:S wiftの列挙メンバーは、CとObjective-Cとは異なり、作成時にデフォルトの整数値が与えられません.上のDaysofaWeekの例では、Sunday、Monday、......およびSaturdayは0、1、......および6に暗黙的に割り当てられません.逆に、これらの列挙メンバー自体には完全な値があり、これらの値は明確に定義されたDaysofaWeekタイプです.
WeekDayのタイプは、DaysofaWeekの可能な値によって初期化されたときに推定することができる.weekDayがDaysofaWeekと宣言されると、略語の構文(.)を使用できます.別のDaysofaWeekの値に設定します.
weekDayのタイプが既知である場合、再びその値を割り当てるには列挙名を省略することができる.明示的なタイプの列挙値を使用すると、コードの読み取りが向上します.
列挙は、相関値と元の値に分けられます.
相関値と元の値の違い
相関値
元の値
異なるデータ型
同じデータ型
例:enum{10,0.8,“Hello”}
例:enum{10,35,50}
値の作成定数または変数に基づく
プリフィル値
相関値は、列挙メンバーに基づく新しい定数または変数を作成するたびに設定され、そうするたびに値が異なる場合があります.
元の値は常に同じです
相関値
次の例では、Nameの文字列(String)またはMarkの相関値(Int,Int,Int)であるStudentという列挙タイプを定義します.
以上のプログラムの実行出力結果は以下の通りです.
元の値
元の値は、文字列、文字、または任意の整数値または浮動小数点値です.各元の値は、その列挙宣言で一意である必要があります.
元の値が整数の列挙では、各メンバーに明示的に値を割り当てる必要はありません.Swiftは自動的に値を割り当てます.
たとえば、元の値として整数を使用すると、暗黙的に付与された値は順次1ずつ増加します.最初の値に初期値が割り当てられていない場合は、自動的に0に設定されます.
以上のプログラムの実行出力結果は以下の通りです.
列挙は簡単に言えばデータ型でもありますが、このデータ型にはカスタムの特定のデータのみが含まれており、共通の特性を持つデータのセットです.
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(" ")
}
以上のプログラムの実行出力結果は以下の通りです.
列挙で定義された値(Sunday、Monday、......、Saturdayなど)は、この列挙されたメンバー値(またはメンバー)です.caseキーワードは、新しいメンバー値が定義されることを示します.
注意:S wiftの列挙メンバーは、CとObjective-Cとは異なり、作成時にデフォルトの整数値が与えられません.上のDaysofaWeekの例では、Sunday、Monday、......およびSaturdayは0、1、......および6に暗黙的に割り当てられません.逆に、これらの列挙メンバー自体には完全な値があり、これらの値は明確に定義されたDaysofaWeekタイプです.
var weekDay = DaysofaWeek.THURSDAY
WeekDayのタイプは、DaysofaWeekの可能な値によって初期化されたときに推定することができる.weekDayがDaysofaWeekと宣言されると、略語の構文(.)を使用できます.別のDaysofaWeekの値に設定します.
var weekDay = .THURSDAY
weekDayのタイプが既知である場合、再びその値を割り当てるには列挙名を省略することができる.明示的なタイプの列挙値を使用すると、コードの読み取りが向上します.
列挙は、相関値と元の値に分けられます.
相関値と元の値の違い
相関値
元の値
異なるデータ型
同じデータ型
例:enum{10,0.8,“Hello”}
例:enum{10,35,50}
値の作成定数または変数に基づく
プリフィル値
相関値は、列挙メンバーに基づく新しい定数または変数を作成するたびに設定され、そうするたびに値が異なる場合があります.
元の値は常に同じです
相関値
次の例では、Nameの文字列(String)またはMarkの相関値(Int,Int,Int)であるStudentという列挙タイプを定義します.
import Cocoa
enum Student{
case Name(String)
case Mark(Int,Int,Int)
}
var studDetails = Student.Name("Runoob")
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。
元の値
元の値は、文字列、文字、または任意の整数値または浮動小数点値です.各元の値は、その列挙宣言で一意である必要があります.
元の値が整数の列挙では、各メンバーに明示的に値を割り当てる必要はありません.Swiftは自動的に値を割り当てます.
たとえば、元の値として整数を使用すると、暗黙的に付与された値は順次1ずつ増加します.最初の値に初期値が割り当てられていない場合は、自動的に0に設定されます.
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。