Swift 3关闭

时间:2017-03-10 22:06:32

标签: swift closures

在Swift 3中我可以在尾随闭包中使用特定于字符串的实现吗?

let names = ["Ekram","Galib","Hasan","Rangon","Asif","Saikat"]

let reversedName = names.sorted{ > }

2 个答案:

答案 0 :(得分:3)

为什么将>包装在尾随闭包中? sorted(by:)接受一个函数,>已匹配其签名。所以就这样做:

let reversedName = names.sorted(by: >)

只是陈述可能不明显的事情:

a)Swift中的运算符像常规函数一样工作,例如在这种情况下,像func > <T>(lhs: T, rhs: T) -> Bool

b)在Swift函数中命名为闭包,如果API需要闭包(如(lhs: T, rhs: T) -> Bool),您还可以使用命名函数,如>func compareTheTwo(a: String, b: String) -> Bool

答案 1 :(得分:0)

是的,但你必须指定你实际比较的是哪个参数:

let reversedNames = names.sorted { $0 > $1 }