guard let x = x where x > 0 else { // 變量不符合條件判斷時,執行下面代碼 return }
使用guard語句將上述的3個問題一併解決:
反向遍歷就是直接在enumerated()函數後調用reversed()函數。 swift (2)swift
extension 相似oc的擴展,可是指這個類的擴展,可讓代碼邏輯更好控制,也爲往後重構代碼打下了良好的基礎(3)閉包
訪問權限則依次爲:open,public,internal,fileprivate,private。fileprivate
這個元素的訪問權限爲文件內私有(4)函數
private lazy var xxx:xxx{ return:} 至關於oc中的懶加載(5)spa
if #available(iOS 11.0, *) {code
return view.safeAreaInsetsci
} else {io
return .zerotable
}基礎
swift和oc中都同樣,判斷系統是不是iOS11 (6)變量
willSet是在設置新值以前調用,willSet觀察器會將新的值做爲參數傳入,默認參數名爲newValue。didSet是設置新值後當即調用,觀察期會將舊的值做爲參數傳入,默認參數爲oldValue。
須要注意的是在屬性初始化的時候不會調用willSet 和 didSet方法。若是在didSet 爲屬性賦值,這個值會替換原來觀察器以前設置的值。(7)
Swift 自動對行內閉包提供簡寫實際參數名,你也能夠經過 $0 , $1 , $2 等名字來引用閉包的實際參數值。
若是你在閉包表達式中使用這些簡寫實際參數名,那麼你能夠在閉包的實際參數列表中忽略對其的定義,而且簡寫實際參數名的數字和類型將會從指望的函數類型中推斷出來。 in 關鍵字也能被省略,由於閉包表達式徹底由它的函數體組成:
1 2 3 4 5 6 7 |
|
能夠看出,能夠用$0、$一、$2來表示調用閉包中參數,$0指代第一個參數,$1指代第二個參數,$2指代第三個參數,以此類推$n+1指代第n個參數,$後的數字表明參數的位置,一一對應。