swift 入門知識之列舉和結構體

2021-09-08 11:25:55 字數 2239 閱讀 5777

列舉:

swift中的列舉有些類似於類這個概念,它有自己的屬性,也可以有自己的方法

列舉中的成員有原始值和實際值之分,原始值用來列舉成員的排序次序,預設從0開始

列舉出來的成員值就是實際值

可以通過toraw和fromraw函式轉換原始值和列舉值

也可以使用字元處或浮點數作為列舉的原始值

列舉:

匹配列舉值和switch語句(matching enumeration values with a switch statement)

具體舉例如下:

//給撲克牌內容宣告乙個列舉(a、2、3、4、5、6、7、8、9、10、j、q、k)

enum

rank:int}}

//建立列舉例項,獲取列舉元素的原始值和實際值

let ace = rank.jack   //

獲取乙個列舉元素

let originvalue = ace.toraw() //

該元素的原始值 10

let factvalue = ace.******description() //

該元素的實際值 jack

//將乙個原始值轉換為實際值

if let origin = rank.fromraw(10)

//給撲克牌的花色宣告乙個列舉

enum

suit}}

//建立列舉例項,獲取列舉元素的值

let heart = suit.hearts   //

獲取乙個列舉元素

let heartsdescription = heart.******description() //

元素的實際值 hearts

結構體:

swift中使用struct建立結構體。結構體支援多個與類相同的行為,包括方法和構造器。

一大重要的區別是結構體(以及列舉)**之間的傳遞總是用拷貝(值傳遞),而類則是傳遞引用(位址傳遞)。

對於傳值呼叫,是把實參戶值傳遞給形參,此時形參是要被分配空間的,而對形參做的任何操作是不會改變實參的值的;

對於傳址呼叫,是指傳遞實參的位址,即形參和實參的指標指向同一塊記憶體區域,任何一方對資料做修改,值都會改變。

類和結構體對比

swift 中類和結構體有很多共同點。共同處在於:

定義屬性用於儲存值

定義方法用於提供功能

定義下標用於通過下標語法訪問值

定義初始化器用於生成初始化值

通過擴充套件以增加預設實現的功能

符合協議以對某類提供標準功能

//結合上面的列舉的使用,現在宣告乙個撲克牌結構體,它有撲克牌內容和花色這兩個列舉型別的成員變數

struct

card

}

//建立結構體成員例項,並呼叫成員方法

//

傳入兩個列舉型別的引用建立乙個結構體成員變數

let threeofshapes =card(rank: .three, suit: .spades)

//結構體成員變數呼叫成員方法

let threeofshapesdescription = threeofshapes.******description() //「the 2 of shpades」

總結:結構體和列舉是值型別值型別被賦予給乙個變數,常數或者本身被傳遞給乙個函式的時候,實際上操作的是其的拷貝。

在之前的章節中,我們已經大量使用了值型別。實際上,在 swift 中,所有的基本型別:整數(integer)、浮點數(floating-point)、布林值(booleans)、字串(string)、陣列(array)和字典(dictionaries),都是值型別,並且都是以結構體的形式在後台所實現。

在 swift 中,所有的結構體和列舉都是值型別。這意味著它們的例項,以及例項中所包含的任何值型別屬性,在**中傳遞的時候都會被複製。

swift 列舉 結構 類

enum animal 可以編譯器可以推斷出右邊的型別。點可以省略 var ani animal bird switch ani 可以給列舉值成員賦值 enum animal var ani animal dog 3,bigdog switch ani enum animal int 通過列舉的ra...

Swift 列舉與結構體

列舉簡單的說也是一種資料型別,只不過是這種資料型別只包含自定義的特定資料,它是一組有共同特性的資料的集合。swift 的列舉類似於 objective c 和 c 的結構,列舉的功能為 enum enumname例如我們定義以下表示星期的列舉 import cocoa 定義列舉 enum dayso...

C 之結構和列舉

定義結構 用struct語句來定義乙個帶有多個成員的新的資料型別,比如宣告乙個person結構 如果該名字表示的是結構體裡面的名字,這需要在名字前加 struct person 下面程式將演示結構的使用 using system namespace test class program n性別 n年...