關於swift的一些屬性總結

guard let x = x where x > 0 else {
        // 變量不符合條件判斷時,執行下面代碼
        return
    }
使用guard語句將上述的3個問題一併解決:
  1. 是對你所指望的條件作檢查,而非不符合你指望的。又是和assert很類似。若是條件不符合,guard的else語句就運行,從而退出這個函數。
  2. 若是經過了條件判斷,可選類型的變量在guard語句被調用的範圍內會被自動的拆包 - 這個例子中該範圍是fooGuard函數內部。這是一個很重要,卻有點奇怪的特性,但讓guard語句十分實用。
  3. 對你所不指望的狀況早作檢查,使得你寫的函數更易讀,更易維護。(1)

 反向遍歷就是直接在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

let numbers = [3,2,4,1,5,7,6];

var sortedNumbers = numbers.sorted(by:{$0 < $1});

print(sortedNumbers);//輸出爲:[1, 2, 3, 4, 5, 6, 7]

 

sortedNumbers = numbers.sorted(by:{$1 < $0});

print(sortedNumbers);//輸出爲:[7, 6, 5, 4, 3, 2, 1]

 能夠看出,能夠用$0、$一、$2來表示調用閉包中參數,$0指代第一個參數,$1指代第二個參數,$2指代第三個參數,以此類推$n+1指代第n個參數,$後的數字表明參數的位置,一一對應。

相關文章
相關標籤/搜索