我尝试从数组扩展中调用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 }
}
}
这是一个构建错误,失败了:
电话中的额外参数
奇怪的是,同样的方法适用于String
扩展名:
extension String {
func test() {
let a = [1,2,3]
sort(a) { x, y in x < y }
}
}
为什么我不能在数组扩展名中调用sort()
?
答案 0 :(得分:3)
因为Array
有一个名为sort
的方法,其形式为sort(isOrderedBefore: (T, T) -> Bool)
因此,当您在sort
范围内调用Array
时,实际上是指该版本而非全局sort
函数。
感谢this answer在我的问题中,我发现您可以通过使用Swift的默认命名空间确保您在全局范围内调用sort
版本,迅速。因此,可以通过Swift.sort
访问全局版本。