語法糖
- let聲明的是常量不可以改胜榔,var聲明的是變量
- 值永遠不會被隱式轉換為其他類型盹舞。如果你需要把一個值轉換成其他類型漏设,請顯式轉換泌枪。如:
let label = "The width is"
let width = 94
let widthLabel = label + String(width)
- 使用[]來創(chuàng)建數組和字典栏渺,可以用[]和[:]來創(chuàng)建空數組和空字典
shoppingList = []
occupations = [:]
- 在類型后面加一個?來標記這個變量的值是可選的,使用汁汗!來表示一個是肯定有的弛槐。
let possibleString: String? = "An optional string."
let forcedString: String = possibleString! // 需要驚嘆號來獲取值
let assumedString: String! = "An implicitly unwrapped optional string."
let implicitString: String = assumedString // 不需要感嘆號
- ?? 操作符可以對比選擇一個不為空的值员凝。(var a = ( b ?? c))
- 使用..< 創(chuàng)建的范圍不包含上界橙困,如果想包含的話需要使用...
- lazy 作為屬性修飾符時瞧掺,只能聲明屬性是變量。另外我們需要顯式地指定屬性類型凡傅,并使用一個可以對這個屬性進行賦值的語句來在首次訪問屬性時運行辟狈。如果我們多次訪問這個實例的str
屬性的話,可以看到只有一次輸出夏跷。
lazy var str: String = { let str = "Hello" print("只在首次訪問輸出") return str }()
- 使用func來聲明一個函數哼转,使用名字和參數來調用函數。使用->來指定函數返回值的類型槽华。
- 函數可以嵌套壹蔓。被嵌套的函數可以訪問外側函數的變量.
- 函數是第一等類型,這意味著函數可以作為另一個函數的返回值猫态。
func makeIncrementer() -> (Int -> Int) {
func addOne(number: Int) -> Int {
return 1 + number
}
return addOne
}
var increment = makeIncrementer()
increment(7)
- 函數也可以當做參數傳入另一個函數佣蓉。
func hasAnyMatches(list: [Int], condition: Int -> Bool) -> Bool {
for item in list {
if condition(item) {
return true
}
}
return false
}
func lessThanTen(number: Int) -> Bool {
return number < 10
}
var numbers = [20, 19, 7, 12]
hasAnyMatches(numbers, condition: lessThanTen)
- 你可以使用{}來創(chuàng)建一個匿名閉包。使用in將參數和返回值類型聲明與閉包函數體進行分離亲雪。
numbers.map({
(number: Int) -> Int in
let result = 3 * number
return result
})
- 要創(chuàng)建一個類的實例勇凭,在類名后面加上括號。使用點語法來訪問實例的屬性和方法匆光。使用init來創(chuàng)建一個構造器。使用deinit創(chuàng)建一個析構函數酿联。
class classname{
init(){}
deinit(){}
}
- 子類的定義方法是在它們的類名后面加上父類的名字终息,用冒號分割。
class classname:parentname{
}
- 子類如果要重寫父類的方法的話贞让,需要用override標記——如果沒有添加override就重寫父類方法的話編譯器會報錯周崭。編譯器同樣會檢測override標記的方法是否確實在父類中。
- 處理變量的可選值時喳张,你可以在操作(比如方法续镇、屬性和子腳本)之前加?。如果?之前的值是nil销部,?后面的東西都會被忽略摸航,并且整個表達式返回nil制跟。否則,?之后的東西都會被運行酱虎。在這兩種情況下雨膨,整個表達式的值也是一個可選值。
- 類里的setter方法读串,新值默認用newValue作為變量
- 枚舉enum里聊记,使用rawValue屬性來訪問一個枚舉成員的原始值
- 使用struct來創(chuàng)建一個結構體。結構體和類有很多相同的地方恢暖,比如方法和構造器排监。它們之間最大的一個區(qū)別就是結構體是傳值,類是傳引用杰捂。
- 泛型舆床,在尖括號里寫一個名字來創(chuàng)建一個泛型函數或者類型。
差不多先這些吧琼娘。