Kotlin 检查消息

问题描述 投票:0回答:1

我正在学习 Kotlin。我正在研究基础知识。让我们考虑屏幕截图中的代码:

我真的很难阅读它显示的消息并理解它。

1:我知道这与数组元素之间的总顺序的需要有关,这样使用二分查找才有意义。

2:我也知道如果我使用 IntArray,我不需要指定比较器,因为整数有它们定义的总顺序。

但是有人可以解释什么是 <out TypeVariable(T)> 以及如何在连贯的句子中阅读以下内容:

fun Array.binarySearch(element: T, comparator: kotlin.Comparator / = java.util.Comparator /, fromIndex: Int = ..., toIndex: Int = ...): Int 在 kotlin 中定义。集合

你也可以给我一个对象数组的例子和定义它们的总顺序的代码的一部分(不是通常的:> 或字母顺序......)

arrays kotlin search
1个回答
0
投票

好吧,

<out TypeVariable(T)>
涉及到一些高级概念,比如泛型和其他相关的东西,因为你还在学习kotlin基础知识,你暂时不能理解这个消息是很好的。

一般来说,这个消息背后的原因是你没有指定你要搜索的元素,有一个名为

element
的参数应该在那里,它的类型是
T
T
这里的意思是泛型类型,它接受任何类,无论是 Int、String 还是任何东西,但是由于将 Int 类型放入参数中,因为您的 Array 由 Integers 组成,否则将抛出异常。

对于

Comperator
,您可以将其设置为值
compareBy { it }
来比较整数,当然使用
IntArray
在您的情况下更好,更高效,更简单。因此,仅对非原始类型使用
Array
类型。当你有一个对象列表并且你想根据这些对象的属性进行比较时,指定 Comperator 的原因就很明显了。但是对于 Int 类型,使用 IntArray 就可以了。

什么是“out”关键字?

文档:

https://kotlinlang.org/docs/generics.html#type-projections

stackoverflow 中关于它的另一个问题:

kotlin 中的 out 关键字是什么

© www.soinside.com 2019 - 2024. All rights reserved.