swift學習筆記

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

 let label = "The width is" 
 let width = 94 
 let widthLabel = label + String(width) <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>
刪除最後一行中的 String,錯誤提示:

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

2、switch 支持任意類型的數據以及各種比較操作——不僅僅是整數以及測試相等。 

 let vegetable = "red pepper" 
 switch vegetable { 
 case "celery": 
 let vegetableComment = "Add some raisins and make ants on a log." 
 case "cucumber", "watercress": 
 let vegetableComment = "That would make a good tea sandwich." 
 case let x where x.hasSuffix("pepper"): 
 let vegetableComment = "Is it a spicy \(x)?" 
 default: 
 let vegetableComment = "Everything tastes good in soup." 
 } 
刪除 default 語句,報錯 
 Switch must be exhaustive, consider adding a default clause
運行 switch 中匹配到的子句之後,程序會退出 switch 語句,並不會繼續向下運行,所以不

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

3、

常量和變量的命名

你可以用任何你喜歡的字符作爲常量和變量名,包括 Unicode 字符:

  1. let π = 3.14159 
  2. let 你好 = "你好世界" 
  3. let ???????? = "dogcow" 

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

4、

輸出常量和變量

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

  1. println(friendlyWelcome) 
  2. // 輸出 "Bonjour!" 

println是一個用來輸出的全局函數,輸出的內容會在最後換行。如果你用 Xcode,println將會輸出內容到“console”面板上。(另一種函數叫print,唯一區別是在輸出內容最後不會換行。)

5、

數值型字面量

整數字面量可以被寫作:

 

- 一個十進制數,沒有前綴

- 一個二進制數,前綴是0b

- 一個八進制數,前綴是0o

- 一個十六進制數,前綴是0x

 

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

  1. let decimalInteger = 17 
  2. let binaryInteger = 0b10001       // 二進制的17 
  3. let octalInteger = 0o21           // 八進制的17 
  4. let hexadecimalInteger = 0x11     // 十六進制的17 

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

 

如果一個十進制數的指數爲exp,那這個數相當於基數和$10^{exp}$的乘積:

 

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

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

 

如果一個十六進制數的指數爲exp,那這個數相當於基數和$2^{exp}$的乘積:

 

0xFp2 表示 $15 × 2^{2}$,等於 60.0。

0xFp-2 表示 $15 × 2^{-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:

  1. let possibleNumber = "123" 
  2. let convertedNumber = possibleNumber.toInt() 
  3. // convertedNumber 被推測爲類型 "Int?", 或者類型 "optional Int" 

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

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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章