swift學習筆記

2021-06-22 15:38:35 字數 2717 閱讀 3241

1、值永遠不會被隱式轉換為其他型別。如果你需要把乙個值轉換成其他型別,請顯式轉換。

let label = "the width is" 

let width = 94

let widthlabel = label + string(width)

could not find an overload for '+' that accepts the supplied arguments

2、switch 支援任意型別的資料以及各種比較操作——不僅僅是整數以及測試相等。 

let vegetable = "red pepper" 

switch vegetable

刪除 default 語句,報錯
switch must be exhaustive, consider adding a default clause
執行 switch 中匹配到的子句之後,程式會退出 switch 語句,並不會繼續向下執行,所以不

需要在每個子句結尾寫 break。 

3、常量和變數的命名

你可以用任何你喜歡的字元作為常量和變數名,包括 unicode 字元:

let π = 3.14159 

let 你好 = "你好世界"

let ???????? = "dogcow"

常量與變數名不能包含數學符號,箭頭,保留的(或者非法的)unicode 碼位,連線與製表符。也不能以數字開頭,但是可以在常量與變數名的其他地方包含數字。

4、輸出常量和變數

你可以用println函式來輸出當前常量或變數的值:

println(friendlywelcome) 

// 輸出 "bonjour!"

println是乙個用來輸出的全域性函式,輸出的內容會在最後換行。如果你用 xcode,println將會輸出內容到「console」面板上。(另一種函式叫print,唯一區別是在輸出內容最後不會換行。)

5、數值型字面量

整數字面量可以被寫作:

- 乙個十進位制數,沒有字首

- 乙個二進位制數,字首是0b

- 乙個八進位制數,字首是0o

- 乙個十六進製制數,字首是0x

下面的所有整數字面量的十進位制值都是17:

let decimalinteger = 17 

let binaryinteger = 0b10001       // 二進位制的17

let octalinteger = 0o21           // 八進位制的17

let hexadecimalinteger = 0x11     // 十六進製制的17

浮點字面量可以是十進位制(沒有字首)或者是十六進製制(字首是0x)。小數點兩邊必須有至少乙個十進位制數字(或者是十六進製制的數字)。浮點字面量還有乙個可選的指數(exponent),在十進位制浮點數中通過大寫或者小寫的e來指定,在十六進製制浮點數中通過大寫或者小寫的p來指定。

如果乙個十進位制數的指數為exp,那這個數相當於基數和$10^$的乘積:

1.25e2 表示 $1.25 × 10^$,等於 125.0。

1.25e-2 表示 $1.25 × 10^$,等於 0.0125。

如果乙個十六進製制數的指數為exp,那這個數相當於基數和$2^$的乘積:

0xfp2 表示 $15 × 2^$,等於 60.0。

0xfp-2 表示 $15 × 2^$,等於 3.75。

6、可選

使用可選(optionals)來處理值可能缺失的情況。可選表示:

-有值,等於 x

或者沒有值

注意:c 和 objective-c 中並沒有可選這個概念。最接近的是 objective-c 中的乙個特性,乙個方法要不返回乙個物件要不返回nil,nil表示「缺少乙個合法的物件」。然而,這只對物件起作用——對於結構體,基本的 c 型別或者列舉型別不起作用。對於這些型別,objective-c 方法一般會返回乙個特殊值(比如nsnotfound)來暗示值缺失。這種方法假設方法的呼叫者知道並記得對特殊值進行判斷。然而,swift 的可選可以讓你暗示任意型別的值缺失,並不需要乙個特殊值。

來看乙個例子。swift 的string型別有乙個叫做toint的方法,作用是將乙個string值轉換成乙個int值。然而,並不是所有的字串都可以轉換成乙個整數。字串"123"可以被轉換成數字123,但是字串"hello, world"不行。

下面的例子使用toint方法來嘗試將乙個string轉換成int:

let possiblenumber = 

"123"

let convertednumber = possiblenumber.toint() 

// convertednumber 被推測為型別 "int?", 或者型別 "optional int"

因為toint方法可能會失敗,所以它返回乙個可選的(optional)int,而不是乙個int。乙個可選的int被寫作int?而不是int。問號暗示包含的值是可選,也就是說可能包含int值也可能不包含值。(不能包含其他任何值比如bool值或者string值。只能是int或者什麼都沒有。)

7、不像c語言,swift 允許多個case匹配同乙個值。但是,如果存在多個匹配,那麼只會執行第乙個被匹配到的case塊。

Swift學習筆記

常量 let product constant iphone6 變數 var product var ipad 不需要宣告變數型別,會根據右側的值推導左側變數的型別 可以多個變數定義在一起 var x1 30,x2 abc 可以精確指定變數的型別 var x1 int 27 指定x1為int型 pr...

Swift 學習筆記

函式的閉包 函式閉包的好處 利用上下文推斷引數和返回值型別 隱式返回單表示式閉包,即單表示式閉包可以省略 return 關鍵字 引數名稱縮寫 尾隨閉包語法 閉包的寫法 根據上下文推斷型別 因為排序閉包函式是作為 sorted by 方法的引數傳入的,swift 可以推斷其引數和返回值的型別。sort...

swift學習筆記

頁面之間的跳轉 從乙個viewcontroller跳轉到另外乙個viewcontroller使用如下函式 1 override func prepareforsegue segue uistoryboardsegue,sender anyobject?12 1314 其中segue就是鏈結兩個vie...