Swift 为什么';t Array.sorted()是否具有默认闭包?

Swift 为什么';t Array.sorted()是否具有默认闭包?,swift,closures,Swift,Closures,鉴于以下情况: let list = [4.2, 1.3, 7.8] let list1 = list.sorted() { $0 < $1 } let list2 = sorted(list) let list3 = sorted(list) { $0 < $1} (作为一个附带问题,为什么操场在右侧显示(3次),而不是list1和list3的结果列表?)只有当该方法只适用于符合可比协议的T时,默认关闭才可行。并非每种类型都定义了运算符 如果仔细观察,自由函数形式有两种风格。一个

鉴于以下情况:

let list = [4.2, 1.3, 7.8]
let list1 = list.sorted() { $0 < $1 }
let list2 = sorted(list)
let list3 = sorted(list) { $0 < $1}

(作为一个附带问题,为什么操场在右侧显示
(3次)
,而不是
list1
list3
的结果列表?)

只有当该方法只适用于符合
可比协议的
T
时,默认关闭才可行。并非每种类型都定义了
运算符


如果仔细观察,自由函数形式有两种风格。一个用于所有
T
,一个用于
T
可比的
只有当该方法仅适用于符合
可比的
协议的
T
时,默认闭包才可行。并非每种类型都定义了
运算符


如果仔细观察,自由函数形式有两种风格。一个用于所有
T
,另一个用于
T
,它们在
let list2=sorted(list)
函数中具有可比性

func sorted<C : SequenceType where C.Generator.Element : Comparable>(source: C) -> [C.Generator.Element]
func排序(源代码:C)->[C.Generator.Element]
被称为。此函数仅针对以下序列定义:
元素类型是可比较的,即可以与函数中的
let list2=sorted(list)
中的
进行比较

func sorted<C : SequenceType where C.Generator.Element : Comparable>(source: C) -> [C.Generator.Element]
func排序(源代码:C)->[C.Generator.Element]
被称为。此函数仅针对以下序列定义:
元素类型是
可比的
,也就是说,可以与
进行比较,但是编译器难道不能注意到默认值不适用于接收方类型并对您大喊大叫吗?或者换句话说,如果我尝试
排序()
不可比的
,编译器将选择“需要关闭”一个,如果我不提供一个结束,就对我大喊大叫。我不清楚为什么它在这种情况下也不能这样做。t上的泛型类型不能有一个进一步限制t的方法,即数组不能有一个只在,事实上,我觉得这有点烦人。但编译器难道不能注意到默认设置对接收器类型不起作用并对您大喊大叫吗?或者换一种方式,如果我尝试对不可比较的
进行排序()
t,编译器将选择“需要关闭”一个,如果我不提供一个结束,就对我大喊大叫。我不清楚为什么它在这种情况下也不能这样做。t上的泛型类型不能有一个进一步限制t的方法,即数组不能有一个只在上操作的方法,我发现它实际上有点烦人。一个简明的替代方法:
let list4=list.sorted(@Rob:Your simple comment实际上让我点燃了一个严肃的灯泡。几乎比我在下面给出的答案更有价值。非常感谢。有一个简明的选择:
let list4=list.sorted(@Rob:你的简单评论实际上让我感到非常兴奋。几乎比我在下面给出的答案更有价值。非常感谢。