gpt4 book ai didi

arrays - .sorted(by : ) method) 中的括号

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

例如我有一个数组:

let myArray = [12,123,412,412,4,124,32]

我希望它按升序排序,我为它创建了一个函数

func sortedAscending(_ i: Int , _ j: Int) -> Bool{ return i < j }

然后我创建变量来存储新的排序数组

let newSorted = myArray.sorted(by : sortedAscending())

在这里,编译器给我这样的错误:error: argument passed to call that takes no arguments当我删除括号时,它工作正常。谁能解释为什么我应该在不带括号的情况下调用函数 sortedAscending?

最佳答案

原因是因为当您不带括号传递 sortedAscending 时,您传递的是闭包本身 作为参数。事实上,这就是您想要做的,因为您要告诉 sorted(by:) 使用传入的闭包进行排序。

相比之下,如果将括号添加到 sortedAscending(),则告诉编译器首先执行闭包,然后传递结果sorted(by:)。如果 sortedAscending() 返回另一个采用两个 Int 的闭包,这可以工作,但在您的情况下,sortedAscending() 只返回一个 Boolsorted(by:) 不能将 Bool 作为参数。此外,尝试调用 sortedAscending() 失败,因为它需要两个 Int 参数,而您没有提供任何参数。

当然,错误消息完全是误导性的,让它听起来像是错误与实际情况完全不同,因为 Swift。

关于arrays - .sorted(by : ) method) 中的括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46017906/

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