1. 程式人生 > >[學習筆記]菜鳥教程Swift知識點總結(一)

[學習筆記]菜鳥教程Swift知識點總結(一)

目錄

基本語法

  1. Swift 的多行註釋可以巢狀在其他多行註釋內部。寫法是在一個多行註釋塊內插入另一個多行註釋。第二個註釋塊封閉時,後面仍然接著第一個註釋塊
	/* 這是第一個多行註釋的開頭
	/* 這是巢狀的第二個多行註釋 */
	這是第一個多行註釋的結尾 */ 
  1. Swift不要求在每行語句的結尾使用分號( ; ),但當在同一行書寫多條語句時,必須用分號隔開
	var myString = "Hello, World!"; print(myString)
  1. Swift語言中識別符號的命名規則如下:
  • 區分大小寫,Myname與myname是兩個不同的識別符號
  • 識別符號首字元可以以下劃線(_)或者字母開始,但不能是數字
  • 識別符號中其他字元可以是下劃線(_)、字母或數字

注意:Swift中的字母採用的是Unicode編碼[1]。Unicode叫做統一編碼制,它包含了亞洲文字編碼,如中文、日文、韓文等字元,甚至是我們在聊天工具中使用的表情符號

  1. 關鍵字是類似於識別符號的保留字元序列,除非用重音符號(`)將其括起來,否則不能用作識別符號。
	let `class` = "Runoob"
  1. Swift語言並不是像C/C++,Java那樣完全忽視空格,Swift對空格的使用有一定的要求,但是又不像Python對縮排的要求那麼嚴格。
    在Swift中,運算子不能直接跟在變數或常量的後面。

資料型別

  1. Int
    Swift 提供了一個特殊的整數型別Int,長度與當前平臺的原生字長相同:
    在32位平臺上,Int和Int32長度相同。
    在64位平臺上,Int和Int64長度相同。

  2. UInt
    Swift 也提供了一個特殊的無符號型別UInt,長度與當前平臺的原生字長相同:
    在32位平臺上,UInt和UInt32長度相同。
    在64位平臺上,UInt和UInt64長度相同。

  3. 浮點數:Float、Double
    Double 表示64位浮點數。當你需要儲存很大或者很高精度的浮點數時請使用此型別。
    Float 表示32位浮點數。精度要求不高的話可以使用此型別。

    注意:
    Double精確度很高,至少有15位數字,而 Float 最少只有6位數字。選擇哪個型別取決於你的程式碼需要處理的值的範圍。

  4. 可選型別:Optional
    使用可選型別來處理值可能缺失的情況。可選型別表示有值或沒有值。

  5. 數值範圍

型別 大小(位元組) 區間值
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)
  1. 類型別名
    類型別名對當前的型別定義了另一個名字,類型別名通過使用 typealias 關鍵字來定義:typealias newname = type

變數、常量

  1. var 關鍵字宣告變數var variableName = <initial value>
  2. let 關鍵字宣告常量let constantName = <initial value>
  3. 明常量或者變數的時候可以加上型別標註(type annotation),說明常量或者變數中要儲存的值的型別。新增型別標註,需要在常量或者變數名後面加上一個冒號和空格,然後加上型別名稱。var constantName:<data type> = <optional initial value>

可選型別

  1. Swift 的可選(Optional)型別,用於處理值缺失的情況。可選表示"那兒有一個值,並且它等於 x “或者"那兒沒有值”。

  2. Swfit語言定義字尾?作為命名型別Optional的簡寫,以下兩種宣告是相等的:

        var optionalInteger: Int?
        var optionalInteger: Optional<Int>
    

    在這兩種情況下,變數 optionalInteger 都是可選整數型別。

    注意,在型別和 ?之間沒有空格。

    Optional 是一個含有兩種情況的列舉,None 和 Some(T),用來表示可能有或可能沒有值。任何型別都可以明確宣告為(或者隱式轉換)可選型別。當宣告一個可選型別的時候,要確保用括號給 ? 操作符一個合適的範圍。
    當你宣告一個可選變數或者可選屬性的時候沒有提供初始值,它的值會預設為 nil。

  3. 強制解析
    當你確定可選型別確實包含值之後,你可以在可選的名字後面加一個感嘆號(!)來獲取值。 這被稱為可選值的強制解析(forced unwrapping)。

           var myString:String?
      		myString = "Hello, Swift!"	
      		if myString != nil {
      		   // 強制解析
      		   print( myString! )
      		}else{
      		   print("myString 值為 nil")
      		}
    

    注意:使用!來獲取一個不存在的可選值會導致執行時錯誤。使用!來強制解析值之前,一定要確定可選包含一個非nil的值。

  4. 自動解析
    在宣告可選變數時使用感嘆號(!)替換問號(?)。這樣可選變數在使用時就不需要再加一個感嘆號(!)來獲取值,它會自動解析。

  5. 可選繫結
    使用可選繫結(optional binding)來判斷可選型別是否包含值,如果包含就把值賦給一個臨時常量或者變數。可選繫結可以用在if和while語句中來對可選型別的值進行判斷並把值賦給一個常量或者變數。

    if let constantName = someOptional {
        statements
    }	
    
    	var myString:String?
    	myString = "Hello, Swift!"
    	if let yourString = myString {
    	   print("你的字串值為 - \(yourString)")
    	}else{
    	   print("你的字串沒有值")
    	}	
    

字面量

  1. 整型字面量
    整型字面量可以是一個十進位制,二進位制,八進位制或十六進位制常量。 二進位制字首為 0b,八進位制字首為 0o,十六進位制字首為 0x,十進位制沒有字首:
    以下為一些整型字面量的例項:

    	let decimalInteger = 17           // 17 - 十進位制表示
    	let binaryInteger = 0b10001       // 17 - 二進位制表示
    	let octalInteger = 0o21           // 17 - 八進位制表示
    	let hexadecimalInteger = 0x11     // 17 - 十六進位制表示
    
  2. 浮點型字面量
    浮點型字面量的預設推導型別為 Swift 標準庫型別中的 Double,表示64位浮點數。
    浮點型字面量預設用十進位制表示(無字首),也可以用十六進位制表示(加字首 0x)。

    let decimalDouble = 12.1875       //十進位制浮點型字面量
    let exponentDouble = 1.21875e1    //十進位制浮點型字面量
    let hexadecimalDouble = 0xC.3p0   //十六進位制浮點型字面量
    
  3. 字串型字面量
    字串型字面量中不能包含未轉義的雙引號 (")、未轉義的反斜線(\)、回車符或換行符。

    轉移字元 含義
    \0 空字元
    \\ 反斜線 \
    \b 退格(BS) ,將當前位置移到前一列
    \f 換頁(FF),將當前位置移到下頁開頭
    \n 換行符
    \r 回車符
    \t 水平製表符
    \v 垂直製表符
    \’ 單引號
    \" 雙引號
    \000 1到3位八進位制數所代表的任意字元
    \xhh… 1到2位十六進位制所代表的任意字元

運算子

  1. swift3 中已經取消了++、–。

  2. 區間運算子

    運算子 描述 例項
    區間運算子 閉區間運算子(a…b)定義一個包含從a到b(包括a和b)的所有值的區間,b必須大於等於a。 ‌ 閉區間運算子在迭代一個區間的所有值時是非常有用的,如在for-in迴圈中: 1…5 區間值為 1, 2, 3, 4 和 5
    開區間運算子 半開區間(a… 1…< 5 區間值為 1, 2, 3, 和 4
  3. 運算子優先順序