Kotlin的groupBy
文档显示了每种类型的特殊形式,例如ByteArray
,IntArray
。为什么会这样,为什么单一的通用形式还不够?
inline fun <T, K> Array<out T>.groupBy(
keySelector: (T) -> K
): Map<K, List<T>>
片段from Kotlin documentation
inline fun <T, K> Array<out T>.groupBy(
keySelector: (T) -> K
): Map<K, List<T>>
inline fun <K> ByteArray.groupBy(
keySelector: (Byte) -> K
): Map<K, List<Byte>>
inline fun <K> ShortArray.groupBy(
keySelector: (Short) -> K
): Map<K, List<Short>>
inline fun <K> IntArray.groupBy(
keySelector: (Int) -> K
): Map<K, List<Int>>
...
问题2
似乎
IntArray
并未将Array
子类化,这可能就是为什么必须这样做的原因。因此,我想知道-如果我想添加自己的函数,比方说
verySpecialGroupBy
-是否意味着我还需要不仅指定一个这样的函数-还需要为每种数组类型重复它?或者,这是一种非常特殊且罕见的情况,当您需要使用那些特殊的数组,并且在实践中,您可以只为通用
Array
定义函数而忽略其余函数?
最佳答案
这些数组专门用于原始类型的数组。因此,在创建verySpecialGroupBy
函数的示例中,如果您想将其与原始类型数组一起使用,则只需对每个专门化重复此操作。
您可以在Kotlin discussion thread中阅读有关基本类型数组需求的更多信息。
关于kotlin - 为什么Kotlin中的groupBy通用形式还不够?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56590302/