Arrays 为什么相同的方法在Swift中的数组扩展中失败?

Arrays 为什么相同的方法在Swift中的数组扩展中失败?,arrays,swift,Arrays,Swift,当我试图从数组扩展中调用sort()时,会出现奇怪的行为,例如,此方法: func test() { let a = [1,2,3] sort(a) { x, y in x < y } } 这是一个生成错误,失败原因是: 调用中的额外参数 奇怪的是,同样的方法可以作为字符串扩展: extension Array { func test() { let a = [1,2,3] sort(a) { x, y in x < y }

当我试图从数组扩展中调用
sort()
时,会出现奇怪的行为,例如,此方法:

func test() {
    let a = [1,2,3]
    sort(a) { x, y in x < y }
}
这是一个生成错误,失败原因是:

调用中的额外参数

奇怪的是,同样的方法可以作为
字符串
扩展:

extension Array {
    func test() {
        let a = [1,2,3]
        sort(a) { x, y in x < y }
    }
}
extension String {
    func test() {
        let a = [1,2,3]
        sort(a) { x, y in x < y }
    }
}
扩展字符串{
func测试(){
设a=[1,2,3]
排序(a){x,y在x

为什么我不能从数组扩展名中调用
sort()

因为
Array
有一个自己的方法,叫做
sort
,它的形式是
sort(isordedbefore:(t,t)->Bool)

因此,当您在
Array
范围内调用
sort
时,实际上是指该版本,而不是全局
sort
函数


在我的一个问题中,我发现您可以通过使用Swift的默认名称空间Swift来确保在全局范围内调用
sort
版本。因此,可以通过
Swift.sort

访问全局版本。我的猜测是
Array
已经有了一个方法
sort
(该方法不需要两个参数),您得到的是该方法,而不是全局
sort
函数。Re:“我的猜测是”。有内置类型的在线API文档吗?是的,看起来很像!你知道我们怎么称呼全局排序吗?@Cezar k thx,我自己找不到任何东西。如果你最终发现了什么,请随意扩展你的答案@mythz,我问了另外一个问题。如果你能想出一个更好的措辞来解释这个问题,请随意编辑。@mythz嘿,我的问题得到了回答,它起作用了。我在这里编辑了我的答案,链接到它并解释了解决方案。希望对你有帮助。太棒了!感谢:)