gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 06:49:25 24 4
gpt4 key购买 nike

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

func test() {
let a = [1,2,3]
sort(a) { x, y in x < y }
}

独立工作,但在 Array 扩展中时失败:

extension Array {
func test() {
let a = [1,2,3]
sort(a) { x, y in x < y }
}
}

这是一个构建错误,失败:

Extra argument in call

奇怪的是,同样的方法可以用作 String 扩展:

extension String {
func test() {
let a = [1,2,3]
sort(a) { x, y in x < y }
}
}

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

最佳答案

因为 Array 有一个名为 sort 的方法,其格式为 sort(isOrderedBefore: (T, T) -> Bool)

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

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

关于arrays - 为什么在 Swift 中的数组扩展中相同的方法会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24050102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com