[學習筆記]菜鳥教程Swift知識點總結(一)
目錄
基本語法
- Swift 的多行註釋可以巢狀在其他多行註釋內部。寫法是在一個多行註釋塊內插入另一個多行註釋。第二個註釋塊封閉時,後面仍然接著第一個註釋塊
/* 這是第一個多行註釋的開頭
/* 這是巢狀的第二個多行註釋 */
這是第一個多行註釋的結尾 */
- Swift不要求在每行語句的結尾使用分號( ; ),但當在同一行書寫多條語句時,必須用分號隔開
var myString = "Hello, World!"; print(myString)
- Swift語言中識別符號的命名規則如下:
- 區分大小寫,Myname與myname是兩個不同的識別符號
- 識別符號首字元可以以下劃線(_)或者字母開始,但不能是數字
- 識別符號中其他字元可以是下劃線(_)、字母或數字
注意:Swift中的字母採用的是Unicode編碼[1]。Unicode叫做統一編碼制,它包含了亞洲文字編碼,如中文、日文、韓文等字元,甚至是我們在聊天工具中使用的表情符號
- 關鍵字是類似於識別符號的保留字元序列,除非用重音符號(`)將其括起來,否則不能用作識別符號。
let `class` = "Runoob"
- Swift語言並不是像C/C++,Java那樣完全忽視空格,Swift對空格的使用有一定的要求,但是又不像Python對縮排的要求那麼嚴格。
在Swift中,運算子不能直接跟在變數或常量的後面。
資料型別
-
Int
Swift 提供了一個特殊的整數型別Int,長度與當前平臺的原生字長相同:
在32位平臺上,Int和Int32長度相同。
在64位平臺上,Int和Int64長度相同。 -
UInt
Swift 也提供了一個特殊的無符號型別UInt,長度與當前平臺的原生字長相同:
在32位平臺上,UInt和UInt32長度相同。
在64位平臺上,UInt和UInt64長度相同。 -
浮點數:Float、Double
Double 表示64位浮點數。當你需要儲存很大或者很高精度的浮點數時請使用此型別。
Float 表示32位浮點數。精度要求不高的話可以使用此型別。注意:
Double精確度很高,至少有15位數字,而 Float 最少只有6位數字。選擇哪個型別取決於你的程式碼需要處理的值的範圍。 -
可選型別:Optional
使用可選型別來處理值可能缺失的情況。可選型別表示有值或沒有值。 -
數值範圍
型別 | 大小(位元組) | 區間值 |
---|---|---|
Int8 | 1 位元組 | -128 到 127 |
UInt8 | 1 位元組 | 0 到 255 |
Int32 | 4 位元組 | -2147483648 到 2147483647 |
UInt32 | 4 位元組 | 0 到 4294967295 |
Int64 | 8 位元組 | -9223372036854775808 到 9223372036854775807 |
UInt64 | 8 位元組 | 0 到 18446744073709551615 |
Float | 4 位元組 | 1.2E-38 到 3.4E+38 (~6 digits) |
Double | 8 位元組 | 2.3E-308 到 1.7E+308 (~15 digits) |
- 類型別名
類型別名對當前的型別定義了另一個名字,類型別名通過使用 typealias 關鍵字來定義:typealias newname = type
變數、常量
- var 關鍵字宣告變數
var variableName = <initial value>
- let 關鍵字宣告常量
let constantName = <initial value>
- 明常量或者變數的時候可以加上型別標註(type annotation),說明常量或者變數中要儲存的值的型別。新增型別標註,需要在常量或者變數名後面加上一個冒號和空格,然後加上型別名稱。
var constantName:<data type> = <optional initial value>
可選型別
-
Swift 的可選(Optional)型別,用於處理值缺失的情況。可選表示"那兒有一個值,並且它等於 x “或者"那兒沒有值”。
-
Swfit語言定義字尾?作為命名型別Optional的簡寫,以下兩種宣告是相等的:
var optionalInteger: Int? var optionalInteger: Optional<Int>
在這兩種情況下,變數 optionalInteger 都是可選整數型別。
注意,在型別和 ?之間沒有空格。
Optional 是一個含有兩種情況的列舉,None 和 Some(T),用來表示可能有或可能沒有值。任何型別都可以明確宣告為(或者隱式轉換)可選型別。當宣告一個可選型別的時候,要確保用括號給 ? 操作符一個合適的範圍。
當你宣告一個可選變數或者可選屬性的時候沒有提供初始值,它的值會預設為 nil。 -
強制解析
當你確定可選型別確實包含值之後,你可以在可選的名字後面加一個感嘆號(!)來獲取值。 這被稱為可選值的強制解析(forced unwrapping)。var myString:String? myString = "Hello, Swift!" if myString != nil { // 強制解析 print( myString! ) }else{ print("myString 值為 nil") }
注意:使用!來獲取一個不存在的可選值會導致執行時錯誤。使用!來強制解析值之前,一定要確定可選包含一個非nil的值。
-
自動解析
在宣告可選變數時使用感嘆號(!)替換問號(?)。這樣可選變數在使用時就不需要再加一個感嘆號(!)來獲取值,它會自動解析。 -
可選繫結
使用可選繫結(optional binding)來判斷可選型別是否包含值,如果包含就把值賦給一個臨時常量或者變數。可選繫結可以用在if和while語句中來對可選型別的值進行判斷並把值賦給一個常量或者變數。if let constantName = someOptional { statements }
var myString:String? myString = "Hello, Swift!" if let yourString = myString { print("你的字串值為 - \(yourString)") }else{ print("你的字串沒有值") }
字面量
-
整型字面量
整型字面量可以是一個十進位制,二進位制,八進位制或十六進位制常量。 二進位制字首為 0b,八進位制字首為 0o,十六進位制字首為 0x,十進位制沒有字首:
以下為一些整型字面量的例項:let decimalInteger = 17 // 17 - 十進位制表示 let binaryInteger = 0b10001 // 17 - 二進位制表示 let octalInteger = 0o21 // 17 - 八進位制表示 let hexadecimalInteger = 0x11 // 17 - 十六進位制表示
-
浮點型字面量
浮點型字面量的預設推導型別為 Swift 標準庫型別中的 Double,表示64位浮點數。
浮點型字面量預設用十進位制表示(無字首),也可以用十六進位制表示(加字首 0x)。let decimalDouble = 12.1875 //十進位制浮點型字面量 let exponentDouble = 1.21875e1 //十進位制浮點型字面量 let hexadecimalDouble = 0xC.3p0 //十六進位制浮點型字面量
-
字串型字面量
字串型字面量中不能包含未轉義的雙引號 (")、未轉義的反斜線(\)、回車符或換行符。轉移字元 含義 \0 空字元 \\ 反斜線 \ \b 退格(BS) ,將當前位置移到前一列 \f 換頁(FF),將當前位置移到下頁開頭 \n 換行符 \r 回車符 \t 水平製表符 \v 垂直製表符 \’ 單引號 \" 雙引號 \000 1到3位八進位制數所代表的任意字元 \xhh… 1到2位十六進位制所代表的任意字元
運算子
-
swift3 中已經取消了++、–。
-
區間運算子
運算子 描述 例項 區間運算子 閉區間運算子(a…b)定義一個包含從a到b(包括a和b)的所有值的區間,b必須大於等於a。 閉區間運算子在迭代一個區間的所有值時是非常有用的,如在for-in迴圈中: 1…5 區間值為 1, 2, 3, 4 和 5 開區間運算子 半開區間(a… 1…< 5 區間值為 1, 2, 3, 和 4 -
運算子優先順序