基礎語法 列舉

2022-09-17 06:09:09 字數 2654 閱讀 7255

列舉的基本用法

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...