[swift 進階]讀書筆記-第六章:函式 C6P1函式的靈活性(The flexibility of function)

liaoWorking在掘金發表於2019-01-10

第六章:函式(function)

6.1 函式的靈活性(The flexibility of function)

注:本節前部分主要通過一個排序的demo來介紹了函式的靈活性

話不多說,直接上程式碼

    var mArray = [3, 1, 2]
    mArray.sort() ///1 2 3
    mArray.sort(by: >)  ///3 2 1
    
    
    
    let animal = ["fish", "dog", "elephant"]
    ///反向比較字串的大小  我們可以巢狀任意的比較函式  讓排序功能更強大!
    let okAnimal = animal.sorted { (lhs, rhs) -> Bool in
        let l = lhs.reversed()
        let r = rhs.reversed()
            ///按順序比較兩個字串的大小   abc > abb 返回值是一個Bool 
        return l.lexicographicallyPrecedes(r)
    }
    print(okAnimal)
複製程式碼
注: String的lexicographicallyPrecedes方法在專案中挺實用的,像比較時間字串"2018-08-08" 和 "2018-03-04" 的時間先後就可以用這個方法。

函式作為資料

本節主要是通過幾個排序的demo講了一些具體案例。
複製程式碼
知識點:swift中的排序演算法是基於內省演算法(introsort),起實質是快排和堆排的混合。 當集合很小時會轉化為插入排序。避免不必要的效能消耗。

文章原始檔地址

相關文章