Function 为什么Kotlin sortedWith()不只是接受一个函数
在此示例中,代码Function 为什么Kotlin sortedWith()不只是接受一个函数,function,kotlin,Function,Kotlin,在此示例中,代码sortedWith与compare功能一起使用。似乎要指定函数,需要将其放在比较器中。这看起来像是额外的一层。为什么sortedWith不只是接受传递给两个T对象并返回Int的函数 fun main(){println(get_list())} fun get_list(): List<Int> {return arrayListOf(1, 5, 2) .sortedWith(object:Comparator<Int>{override fun c
sortedWith
与compare
功能一起使用。似乎要指定函数,需要将其放在比较器中。这看起来像是额外的一层。为什么sortedWith
不只是接受传递给两个T
对象并返回Int
的函数
fun main(){println(get_list())}
fun get_list(): List<Int> {return arrayListOf(1, 5, 2)
.sortedWith(object:Comparator<Int>{override fun compare(l:Int,r:Int)=r-l})}
fun main(){println(get_list())}
fun get_list():list{return arrayListOf(1,5,2)
.sortedWith(对象:比较器{override fun compare(l:Int,r:Int)=r-l})
:
由于sortedWith仅在公共库中受支持,我认为它需要一个可比的到更安全的方法来处理目标平台在处理项目比较方面的差异
由于两个签名的接收者都是一种列表(不是Kotlin类型意义上的),因此可以预期两次迭代之间的比较可能是不同类型之间的比较。
如果您没有receiver type和input type之间的compareTo签名,那么它将不知道如何在Kotlin比较器和Javascript比较器之间安全地进行转换
“”==false
为True
“Hello World”==false
为false
虽然在语言设计中可能会考虑到这些特定的语言规则,但这是一个原语示例,如果我们有运行时定义的对象和其他复杂信息,它可能会很快崩溃
如果Comparable没有用作中介接口,那么预期的比较在Kotlin中可能是有意义的,但是当转换到目标平台时,可能会产生意想不到的结果
长话短说,这是一个额外的一层,提供安全 没有回答这个问题,但您可以将其写为.sortedWith(Comparator{l,r->r-l})
“因为sortedWith仅在公共库中受支持”——所选的“common”和“1.3”表示我请求页面显示的信息。