本文學習自《 The Swift Programming Language-swift2.0官方手冊 中文版》的電子版
是記錄自己的Swift學習曆程、整理相關資料便于檢視
學習Swift有一個很友善的工具
playground
,可以同步輸出執行代碼後的結果,不用在每次列印輸出
配置:
選擇 New File
OK
簡單值
使用let聲明常量,使用var聲明變量
var myVar = 45
myVar = 50
常量隻可以指派一次 也就是說你可以用常量表示某個隻需要指派一次,但需要使用很多次的值
let myLet =
練習:建立一個顯示類型為Float且初始值為4的常量
let exp : Float =
值永遠不會被隐式的轉換成其他類型,如果需要轉換類型,請顯式轉換
let label = "My age is "
var age =
let ageLabel = label + String(age)
把值轉換成字元串更簡單的方法:把值寫到括号中,且在括号前加反斜杠
let apples =
let oranges =
let appleSummary = "I have \(apples) apples"
let fruits = "I have \(apples + oranges) fruits"
練習:使用()表示我的身高為175.5cm
let height : Float =
let myHeight = "My height is \(height)cm"
建立一個空數組或者字典,使用初始化方法
let emptyArray = [String]() //表明元素類型
let emptyDict = [String:Float]() //表明key和Value的類型
使用[]和[:]來建立空數組和空字典 并用下标或key來通路元素
var array = ["1","2","3"]
print(array[])
array[] = "change"
print(array[])
var dict = ["name":"Unique","age":]
dict["sex"] = "Man"
print(dict)
控制流
使用if和switch來進行條件操作,使用for-in、for、while、和repeat-while來循環
包裹條件和循環變量括号可以省略,但語句體的大括号是必須的
let numberArray = [,,,,]
var teamScore =
for score in numberArray {
if score > {
teamScore +=
} else {
teamScore +=
}
}
print(teamScore)
在if語句中,條件必須是一個BOOL表達式,不會隐形的與0做對比–這意味着像if score{…}這樣的代碼将會報錯
你可以同時使用if和let來處理值缺失的情況
var optionalString : String? = "Hello"
print(optionalString == nil)
var optionalName :String? = "Unique"
var greeting = "Hello"
if let name = optionalName {
greeting = "Hello,\(name)"
} else {
greeting = "GOOD"
}
練習: 把optionalName改成nil,greeting會是什麼?添加一個else語句,當optionalName是nil時給greeting賦一個不同的值
當變量的可選值是nil,條件會判斷false,大括号的代碼會被跳過。如果不是nil,會将值賦給let後面的常量,這樣在代碼塊中就可以使用這個值了
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 = "The would make a good tea sandwich."
case let x where x.hasSuffix("pepper"):
let vegetableComment = "Is it a spicy \(x)?"
default:
let vegetableComment = "Evenything tastes good in soup."
}
let x where x.hasSuffix(“pepper”) 是說vegetable的值是不是以”pepper”做字尾(也就是結尾) 是就指派給常量 x
switch執行到比對的子句之後,程式會退出switch語句,是以不必每個子句結尾都寫break
for in 周遊
let interestingNumbers = [
"Prime" : [,,,,,],
"Fibonacci" : [,,,,,],
"Square" : [,,,,]
]
var largest =
for (key,numbers) in interestingNumbers {
for number in numbers {
largest = number
}
}
print(largest)
先周遊字典取出每個數組 再周遊數組
使用while來重複運作一段代碼直到條件不滿足,循環條件也可以寫在結尾,保證能至少循環一次
var n =
while n < {
n = n *
}
print(n)
var m =
repeat {
m = m *
} while m <
print(m)
你可以在循環中使用..<來表示範圍,也可以使用傳統寫法,二者等價
var firstForLoop =
for i in . {
firstForLoop +=
}
print(firstForLoop)
使用..<建立的範圍不包含上界,想要包含的話使用…