列舉:
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年...