Статус | Ожидание | Реальность |
---|---|---|
Коллекции с элементами примитивных типов не требуют дополнительных маппингов | Маппинги не требуются только для String-типа |
Примитивные типы Kotlin-а, указанные в generic-ах, превращаются в специальные обёртки над примитивными типами:
List<Byte>
->[KotlinByte]
List<UByte>
->[KotlinUByte]
List<Short>
->[KotlinShort]
List<UShort>
->[KotlinUShort]
List<Int>
->[KotlinInt]
List<UInt>
->[KotlinUInt]
List<Long>
->[KotlinLong]
List<ULong>
->[KotlinULong]
List<Float>
->[KotlinFloat]
List<Double>
->[KotlinDouble]
List<Boolean>
->[KotlinBoolean]
И два исключения (аналогично optional-ам:
List<String>
->[String]
List<Char>
->[Any]
Чтобы передать Swift-типы (не литералы) в качестве аргументов в Kotlin-функции, придётся писать маппинги:
func collectionsExample(intList: [Int]) {
let _: [KotlinInt] = types.intList(list: [1,2,3]) // ok
let _: [KotlinInt] = [1, 2, 3] + types.listType(list: [1, 3, 4]) // ok
// Маппинг
let li2: [KotlinInt] = types.listType(
list: intList.map({ p in KotlinInt(value: p) })
)
}