4. S w i f t
Types Variables Strings
Function if/
Switch
LoopsClass
Arrays
Dictionary
5. V a r i a b l e
•宣告變數的語法格式:
var nameOfVariable = "Value of Variable”
• 注意⼤大⼩小寫不⼀一樣
var a = 5
a == A // false
•可以在⼀一⾏行行定義多個變數或常數,⽤用逗號隔開
var b = 2, c = 8, d = 8
b + c + d //18
6. N a m i n g V a r i a b l e s
• ⾸首字元:⼤大寫或⼩小寫的字⺟母 A 到 Z、底線
• ⾸首字元之後可使⽤用數字和 Unicode 字元組合
• 不能使⽤用Swift關鍵字、數學符號、箭頭、標點字符、連線與
制表字元(box-drawing characters)
• 嚴格區分⼤大⼩小寫,⼤大⼩小寫不同視作不同命名
• 最好選擇有意義的英⽂文單詞
7. T y p e I n f e r e n c e
Swift 不⽤用明確設置變數或常數的類類型,因為編譯器能從左邊的值推測⾃自動推
斷出右邊的變數或常數的型別
•Type Inference (型別推斷): 不⽤用宣告型別 -> 隱式宣告
•Type annotation(型別標注): 說明要儲存的值的型別-> 顯式宣告
以下宣告⽅方式顯式與隱式意義相同:
var num1 = 123 // num1 會被推測為Int型別
var num2: Int = 123
var double1 = 3.14 // double1 會被推測為Double型別,選擇浮點數的型別時,
Swift 會選擇Double⽽而不是Float
var double2: Double = 3.14
var pi = 3 + 0.1415 // 表達式中出現了了⼀一個浮點數字⾯面量量,所以表達式會被推斷為Double
型別
8. T y p e S a f e t y
在編譯的時候,變數或常數並不需要有明確的值,可只宣告名稱
但在使⽤用前必須給初值
型別⼀一旦決定就無法⾃自動轉換
型別不同不能直接⼀一起處理理
型別轉換:必須顯式指定型別
var number3 = 1234 // Type: Int
var intToStr = String(number3) // Type: String
9. C o n s t a n t
•永遠不會被更更動的資料料宣告為常數
•使⽤用let來來宣告常數,使⽤用var來來宣告變數
•宣告後不能將常數與變數進⾏行行互轉
var A = 1
A = 2
let B = 3
B = 4 // Cannot assign to value: 'B' is a 'let' constant. (只能賦值⼀一次)
10. T y p e s
• Int 或 UInt - ⽤用於整數,其中作為UInt⽤用來來定義無符號整數的整數
• Float - ⼀一般⽤用於使⽤用較⼩小的浮點值(⼩小數點數字)
例例如:3.14159, 1.23
• Double - ⽤用於較⼤大的浮點值。
例例如: 3.1415925359
• Bool - 代表⼀一個布林林值,true or false
• String - 這是有序字符集合。例例如: "Hello, World!"
• Character - ⽤用來來表示⼀一個單字符。例例如: "C"
• Optional - 這表示可以容納⼀一個值或沒有任何值的Variables
11. T y p e s
• Int 或 UInt - ⽤用於整數,其中作為UInt⽤用來來定義無符號整數的整數
• Double - ⽤用於較⼤大的浮點值。
•Float - ⼀一般⽤用於使⽤用較⼩小的浮點值(⼩小數點數字)
• Bool - 代表⼀一個布林林值,真或假。
• String - 這是有序字符集合
12. O p t i o n a l
Optional可以容納⼀一個值或沒有任何值的Variables
Optional有兩兩種狀狀態:⼀一個是空無⼀一物、⼀一個就是型別的值
宣告:
型別後⾯面加上問號?表示變數是個 Optional
型別與?間不可留留空⽩白
Optional 預設值為nil,宣告後不賦值即設為預設值
14. C o l l e c t i o n s
Array
->⼀一組有序排列列的資料料
Dictionary
-> ⼀一組由<鍵,值>組合的資料料,資料料不依序儲存,依照<鍵>索
引<值>效率⾼高於其他集合型別
Set
-> ⼀一組不重複的資料料,資料料不依序儲存
15. A r r a y
Array由⼀一對中括號[]組成,裡⾯面定義元素
使⽤用[]加上位置對某元素取值
[]搭配=設定(取代)某元素
[]搭配 Range Operator 定義特定範圍的元素
var array = [1, 3, 5]
array[0] //return: 1
array[0] = 0 //return: 0
array //return: [0, 3, 5]
array[1...2] = [1, 2] //return: [1, 2]
array //return: [0, 1, 2]
16. A r r a y
Array型別⼀一旦決定就不能變更更,設定不同型別的資料料會
造成編譯錯誤
存取超出範圍也會造成編譯錯誤
• 藉由=右邊的值組推測 Array 型別 (Type Inference)
• 明確在[、]之間宣告儲存資料料的型別
• 使⽤用 Generic ⽅方式在< >之間宣告 Array 元素的型別
18. D i c t i o n a r y
• Dictionary 由⼀一對中括號[]構成,裡⾯面的元素以
<key>:<value>⽅方式存放
• 藉由=右邊的值組推測 Dictionary 型別 (Type Inference)
• 明確在[、]之間宣告儲存資料料的型別
• 使⽤用 Generic ⽅方式在<、>之間宣告 Dictionary 元素的型別
var dict1 = [String:Int]()
var dict2: [String:Int] = [:]
var dict3: Dictionary<String, Int>
var dict4 = ["Dog": 3, "Cat": 5, "Rabbit": 2]
var dict5: [String:Int] = ["Dog": 3, "Cat": 5, "Rabbit": 2]
var dict6: Dictionary<String, Int> = ["Dog": 3, "Cat": 5,
"Rabbit": 2]
19. D i c t i o n a r y
• 使⽤用[<key>]對某元素取值。
• [<key>]搭配=設定(取代)某元素。
28. F o r - i n L o o p s
For item in Collection{
執⾏行行程式碼
}
29. F u n c t i o n
Function 的格式: 使⽤用func關鍵字定義 Function,接著宣告
Function 名稱,然後使⽤用()宣告參參數列列表,如果有回傳值則使⽤用->宣告
回傳值的型別
func functionName (parameterName: parameterType) -> returnType {
statements to execute
return object
}