Документация Kotlin для groupBy
показывает специальную форму для каждого типа, например ByteArray
, IntArray
. Почему это так, почему единой универсальной формы недостаточно?
inline fun <T, K> Array<out T>.groupBy(
keySelector: (T) -> K
): Map<K, List<T>>
Фрагмент из документации Kotlin
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
и игнорировать остальные?