列舉的基本用法
enum direction
enum direction
var dir = direction.west
dir = direction.east
dir = .north
print(dir)
switch dir
關聯值有時會將列舉的成員值跟其他型別的關聯儲存在一起,會非常有用
enum score
var score = score.point(96)
score = .grade("a")
switch score
enum date
var date = date.digit(year: 2011, month: 9, day: 10)
date = .string("2011-09-10")
switch date
必要時let也可以改為var
關聯值舉例
手機密碼
數字密碼或者手勢密碼
enum password
var pwd = password.number(3, 5, 7, 8)
pwd = .gesture("12369")
switch pwd
原始值列舉成員可以使用相同型別的預設值預先關聯,這個預設值叫做:原始值
enum pokersuit : character
var suit = pokersuit.spade
print(suit)//spade
print(suit.rawvalue)//♠
print(pokersuit.club.rawvalue)//♣
enum grade: string
print(grade.perfect.rawvalue)
print(grade.great.rawvalue)
print(grade.good.rawvalue)
print(grade.bad.rawvalue)
隱式原始值
如果列舉的原始值是int,string,swift會自動分配原始值
enum direction : string
等價於enum direction : string
print(direction.north) // north
print(direction.north.rawvalue) // north
enum season: int
print(season.spring.rawvalue) //0
print(season.summer.rawvalue) //1
print(season.autumn.rawvalue) //2
print(season.winter.rawvalue) //3
enum season: int
print(season.spring.rawvalue) //0
print(season.summer.rawvalue) //2
print(season.autumn.rawvalue) //4
print(season.winter.rawvalue) //5
遞迴列舉
indirect enum arithexpr
enum arithexpr
let five = arithexpr.number(5)
let four = arithexpr.number(4)
let two = arithexpr.number(2)
let sum = arithexpr.sum(five, four)
let difference = arithexpr.difference(sum, two)
func calculate(_ expr: arithexpr) -> int
calculate(difference)//7
memorylayout
可以使用memorylayout獲取資料型別占用的記憶體大小
var age = 10
memorylayout.size //8
memorylayout.stride //8
memorylayout.alignment //8
memorylayout.size(ofvalue: age)//8
memorylayout.stride(ofvalue: age)//8
memorylayout.alignment(ofvalue: age)//8
enum password
var pwd = password.number(5, 6, 7, 8)
memorylayout.size //33, 實際用到的空間大小
memorylayout.stride //40, 分配占用的空間大小
memorylayout.alignment //8,對齊引數
enum season : string
var s = season.spring
memorylayout.size //1
memorylayout.stride //1
memorylayout.alignment //1
乙個位元組就夠了(原因是關聯值需要自己的記憶體來儲存,原始值是固定死的,並不是存在變數裡面)
Swift 基礎學習 列舉基本語法
swift列舉 1 列舉基本語法 2 switch匹配列舉 3 原始值 4 原始值rawvalue方法,2.0版本之前為fromraw 5 列舉關聯值 6 switch提取列舉關聯值 enum method varm0 method add 相當於類名.屬性 var m1 method.sub 2 ...
Swift基礎 列舉
列舉定義了乙個通用型別的一組相關的值,使我們可以在自己的 中以乙個安全的方式來使用這些值。列舉的結構 enum someenumeration 複製 列舉的使用 定義列舉 enum direction 呼叫列舉 var direct direction.east print 現在的方向是 direc...
python列舉型別 python基礎 列舉類
python 列舉類 示例 2016 8 30 18 55 25 mengmengcoding coding utf 8 from enum importenum enum是乙個列舉類 month,weekday各為乙個enum類的例項化 month enum month jan feb mar a...