【问题标题】:Kotlin convert List to varargKotlin 将 List 转换为可变参数
【发布时间】:2020-12-31 19:44:18
【问题描述】:

我有List<UnitWithComponents>类型的输入数据

class UnitWithComponents {
    var unit: Unit? = null
    var components: List<Component> = ArrayList()
}

我想将数据转换为varargUnit

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

【问题讨论】:

  • 会更容易使用mapNotNull{}来避免一些意外或异常

标签: list kotlin variadic-functions


【解决方案1】:
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())

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

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

发件人:strings = list.map { it }.toTypedArray()

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

GL

Source

【讨论】:

    【解决方案2】:

    不,这是正确的做法(假设您想在 it.unitnull 对于列表的某些元素时抛出异常)。

    【讨论】:

      猜你喜欢
      • 2018-02-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-23
      • 2011-01-21
      • 2016-04-29
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      相关资源
      最近更新 更多