Swift中關(guān)鍵字比較多,大部份剛開始學的時候看到這么多有點慌,初步整理一份,持續(xù)更新。
Like an if statement, guard executes statements based on a Boolean value of an expression. Unlike an if statement, guard
statements only run if the conditions are not met. You can think of guard more like anAssert , but rather than crashing, you can gracefully exit.和if語句類似,也是根據(jù)bool值來判斷,但guard只有在條件不滿足的時候觸發(fā)。你也可以把它看作一種異常處理。
問號是optional的縮寫。Swift里不會自動給變量賦初始值,也就是說變量不會有默認值,所以要求使用變量之前必須要對其初始化。
一旦聲明為Optional的,如果不顯式的賦值就會有個默認值nil。
- !
感嘆號表示“所修飾的這個符號里面的值一定是非nil的。
swift中有個雙問號操作符(??),可以用來快速對nil進行條件判斷, 對于不期望某個optional值為nil時func返回nil 或者 因為其值為nil而停止了后續(xù)業(yè)務的情況下,我們可以用"??"在optionalValue為nil時做賦值保險操作(“??”操作后返回值為非optional)
用法:
newValue = optionalValue ?? value
若optionalValue非nil時,newValue的值為optionalValue的值,若optionalValue為nil時,newValue的值為value的值
- private/open/public/fileprivate/internal
-- http://www.hangge.com/blog/cache/detail_524.html
上面幾個關(guān)鍵字是swift的訪問控制符
private 訪問級別所修飾的屬性或者方法只能在當前類里訪問。
fileprivate 訪問級別所修飾的屬性或者方法在當前的Swift源文件里可以訪問。
internal 訪問級別所修飾的屬性或方法在源代碼所在的整個模塊都可以訪問。
如果是框架或者庫代碼,則在整個框架內(nèi)部都可以訪問,框架由外部代碼所引用時,則不可以訪問。
如果是App代碼,也是在整個App代碼,也是在整個App內(nèi)部可以訪問。
public 可以被任何人訪問。但其他module中不可以被override和繼承,而在module內(nèi)可以被override和繼承。
open 可以被任何人使用,包括override和繼承。
let 代表修飾的是常量,不可變。
var 修飾的是變量,可變。
和oc類似,在現(xiàn)有類和結(jié)構(gòu)體的類型基礎(chǔ)上,擴展新的功能。
- _
-- http://blog.csdn.net/twlkyao/article/details/30536397
-- http://www.cocoachina.com/industry/20140630/8982.html
下劃線的功能有很多,主要是用來占位,但具體占位的作用可以參考上面的鏈接。
主要用來 聲明外部函數(shù)名,
- ...
--
和省略號的作用是一樣的,代表后面還有很多,比如多個參數(shù)。又或者代表某個范圍1...5
- $
--
為了能夠在實例方法中修改屬性值,可以在方法定義前添加關(guān)鍵字mutating
如果我們希望一個函數(shù)可以修改它的參數(shù)變量的值,我們可以使用 inout 關(guān)鍵詞。這個相當于編程語言概念中所謂的傳址調(diào)用。
使用@objc修飾后的類型,可以直接供 Objective-C 調(diào)用
- #available
-- http://swift.gg/2016/04/13/swift-qa-2016-04-13/
對于函數(shù),類,協(xié)議等,可以使用@available聲明這些類型的生命周期依賴于特定的平臺和操作系統(tǒng)版本。而#available用在判斷語句中(if, guard, while等),在不同的平臺上做不同的邏輯。