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嘿,我的问题得到了回答,它起作用了。我在这里编辑了我的答案,链接到它并解释了解决方案。希望对你有帮助。太棒了!感谢:)