Swift 为什么排序([1,2,3]){true}不';你不能在斯威夫特工作吗?

Swift 为什么排序([1,2,3]){true}不';你不能在斯威夫特工作吗?,swift,Swift,我知道这个例子完全是无用的和人为的,但我试图更好地了解Swift中如何处理值,我不明白下面的代码为什么返回错误 var notSorted = sort([1,2,3,4]){true} sort的第二个参数的类型为(T,T)->Bool,但您提供的是一个()->Bool,即不带返回true的参数的闭包 当然,这两种类型不匹配,您理所当然地会得到一个编译时错误 类似这样的方法会奏效: var notSorted = sort([1,2,3,4]){_ in true} 顺便说一下,该闭包具

我知道这个例子完全是无用的和人为的,但我试图更好地了解Swift中如何处理值,我不明白下面的代码为什么返回错误

var notSorted = sort([1,2,3,4]){true}

sort
的第二个参数的类型为
(T,T)->Bool
,但您提供的是一个
()->Bool
,即不带返回
true
的参数的闭包

当然,这两种类型不匹配,您理所当然地会得到一个编译时错误

类似这样的方法会奏效:

var notSorted = sort([1,2,3,4]){_ in true}


顺便说一下,该闭包具有反转数组的效果。如果要执行nop,必须将
false

放入
sort
的第二个参数类型为
(T,T)->Bool
,但您提供的是
()->Bool
,即不带返回
true
的参数的闭包

当然,这两种类型不匹配,您理所当然地会得到一个编译时错误

类似这样的方法会奏效:

var notSorted = sort([1,2,3,4]){_ in true}


顺便说一下,该闭包具有反转数组的效果。如果你想执行nop,你必须输入
false

啊哈!我知道,我只是从返回值的角度考虑,没有意识到传递的完整闭包是类型安全的。非常感谢。我想自6月4日以来,情况发生了变化。当前测试版在此语句中给出了一个错误。错误标记指向左括号并表示“'inout C没有名为'Element'的成员”。我不知道这是什么意思。@RobertL尝试在
排序中重命名
排序
,啊哈!我知道,我只是从返回值的角度考虑,没有意识到传递的完整闭包是类型安全的。非常感谢。我想自6月4日以来,情况发生了变化。当前测试版在此语句中给出了一个错误。错误标记指向左括号并表示“'inout C没有名为'Element'的成员”。我不知道这是什么意思。@RobertL尝试在
排序的
中重命名
排序