美文网首页swift 文章收集iOS学习
Swift 3.0 数组排序 简化

Swift 3.0 数组排序 简化

作者: 柠檬草YF | 来源:发表于2016-12-01 17:36 被阅读73次

    下面的代码是把数组里面的名字按字母的顺序排序,看上去比较复杂。尽最大的可能简化闭包里的代码。

     let animals = ["fish", "cat", "chicken", "dog"]
            let sortedAnimals = animals.sorted { (one: String, two: String) -> Bool in
                return one < two
            }
            print(sortedAnimals)
    

    第一个简化的是参数。系统的参数类型推断功能,可以计算出闭包里面参数的类型,所以你不必定义参数的类型:

     let animals = ["fish", "cat", "chicken", "dog"]
            let sortedAnimals = animals.sorted { (one, two) -> Bool in
                return one < two
            }
            print(sortedAnimals)
    

    函数返回值也可以被推断出来,所以简化掉,代码变为:

     let animals = ["fish", "cat", "chicken", "dog"]
            let sortedAnimals = animals.sorted { (one, two)  in
                return one < two
            }
            print(sortedAnimals)
    

    这个$i 符号可以代替参数名字,代码进一步简化为:

     let animals = ["fish", "cat", "chicken", "dog"]
            let sortedAnimals = animals.sorted {
                return $0 < $1
            }
    print(sortedAnimals)
    

    在一个独立的闭包内,return这个关键字是可以省略的。最后声明的返回值就是闭包的返回值

    let sortedAnimals = animals.sort { $0 < $1 }
    

    这简化很多了,但是我们不能止步于此!
    对于字符串,有一个定义如下的比较函数

    func  Bool
    

    这个简单的小函数可以使你的代码简洁如下:

    let sortedAnimals = animals.sorted(by:<)
    

    相关文章

      网友评论

        本文标题:Swift 3.0 数组排序 简化

        本文链接:https://www.haomeiwen.com/subject/tuoxmttx.html