List Kotlin将列表转换为vararg

List Kotlin将列表转换为vararg,list,kotlin,variadic-functions,List,Kotlin,Variadic Functions,我有列表类型的输入数据 class UnitWithComponents{ 变量单位:单位?=null 变量组件:List=ArrayList() } 我想将数据转换为单元的vararg 目前我正在做*data.map{it.unit!!}.toTypedArray()。有更好的方法吗?没有,这是正确的方法(假设您想在它时引发异常。对于列表中的某些元素,单位为null) 使用 foo(strings=arrayOf(“a”、“b”、“c”)) val列表:可变列表=可变列表的列表(“a”、“b

我有
列表类型的输入数据

class UnitWithComponents{
变量单位:单位?=null
变量组件:List=ArrayList()
}
我想将数据转换为
单元的
vararg


目前我正在做
*data.map{it.unit!!}.toTypedArray()
。有更好的方法吗?

没有,这是正确的方法(假设您想在
它时引发异常。对于列表中的某些元素,单位
null

使用
foo(strings=arrayOf(“a”、“b”、“c”))
val列表:可变列表=可变列表的列表(“a”、“b”、“c”)
foo(strings=list.map{it}.toTypedArray())

非Kotlin函数(*.java)不允许使用命名参数

因此,在这种情况下,您应该替换:

From:
strings=list.map{it}.toTypedArray()

收件人:
*list.map{it}.toTypedArray()

德国劳埃德船级社


使用
mapNotNull{}
将更容易避免一些意外或异常
class UnitWithComponents {
    var unit: Unit? = null
    var components: List<Component> = ArrayList()
}
fun foo(vararg strings: String) { /*...*/ }
foo(strings = arrayOf("a", "b", "c"))

val list: MutableList<String> = listOf("a", "b", "c") as MutableList<String>
foo(strings = list.map { it }.toTypedArray())