Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Generics 处理数组的函数<;T>;或无阵列_Generics_Kotlin - Fatal编程技术网

Generics 处理数组的函数<;T>;或无阵列

Generics 处理数组的函数<;T>;或无阵列,generics,kotlin,Generics,Kotlin,我想创建一个通用函数,它接受数组或IntArray并对它们进行迭代并执行任意操作。不幸的是,IntArray不是Array的子类型。这在Kotlin中可能吗?不,这不是直接可能的,因为IntArray是一种单独的类型,与数组没有关系,它允许一个函数同时处理这两种类型 但是,您可以定义一个重载,将IntArray转换为Array或提供不同的优化实现: fun <T> foo(items: Array<T>) { /* ... */ } fun <T> foo(

我想创建一个通用函数,它接受
数组
IntArray
并对它们进行迭代并执行任意操作。不幸的是,
IntArray
不是
Array
的子类型。这在Kotlin中可能吗?

不,这不是直接可能的,因为
IntArray
是一种单独的类型,与
数组
没有关系,它允许一个函数同时处理这两种类型

但是,您可以定义一个重载,将
IntArray
转换为
Array
或提供不同的优化实现:

fun <T> foo(items: Array<T>) { /* ... */ }

fun <T> foo(items: IntArray) = foo(items.toTypedArray())
funfoo(items:Array){/*…*/}
fun foo(items:IntArray)=foo(items.toTypedArray())
见:


正如您在
kotlin stdlib
文档中所看到的,许多函数都是以这种方式为
Array
和各种基本数组类型单独定义的(尽管有单独的实现,这比转换数组更有效),例如,

不,这不可能直接实现,因为
IntArray
是一个单独的类型,它与
Array
没有关系,可以允许一个函数同时处理这两种类型

但是,您可以定义一个重载,将
IntArray
转换为
Array
或提供不同的优化实现:

fun <T> foo(items: Array<T>) { /* ... */ }

fun <T> foo(items: IntArray) = foo(items.toTypedArray())
funfoo(items:Array){/*…*/}
fun foo(items:IntArray)=foo(items.toTypedArray())
见:


正如您在
kotlin stdlib
文档中所看到的,许多函数都是以这种方式分别为
Array
和各种基本数组类型定义的(尽管有单独的实现,这比转换数组更有效),例如,

这样的函数已经存在:这样的函数已经存在: