Kotlin-Lambda返回成员变量列表

时间:2018-06-28 18:59:15

标签: kotlin

前言:我不确定Kotlin可以做到这一点,但我认为应该能够做到。

问题:是否可以通过lambda,映射或其他方式返回由另一个列表的成员变量组成的列表,而无需创建单独的函数?

我有一个Kotlin内部类,它有一个代表物理COM端口的名称字符串。我有一个例程,它将轮询设备上可用的COM端口,并将返回可用端口名称字符串的列表以供选择。

inner class ComPort() {

val portName: String = "something"

... }

...


ComPortSelectBox.setItems(*getComPortNames())

...

private fun getComPortNames(): Array<String> {
  val names: ArrayList<String> = ArrayList()

  for(comPort in availableComPorts)
    { names + comPort.portName }

  return names.toTypedArray()
}

因为getComPortNames()仅在一个位置使用,所以我希望将此调用简化为与getComPortNames等效的内容,以便可以在.setItems(...)中使用内联。在Kotlin内这可能吗?如果是这样,怎么办?

1 个答案:

答案 0 :(得分:3)

我不确定availableComPorts到底是什么,但看起来像Iterable。如果是这样,那么您可以执行以下操作:

ComPortSelectBox.setItems(*availableComPorts.map(ComPort::portName).toTypedArray())

UPD。您没有提及正在使用的Java。我以为是Java 8。