前言:我不确定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内这可能吗?如果是这样,怎么办?
答案 0 :(得分:3)
我不确定availableComPorts
到底是什么,但看起来像Iterable
。如果是这样,那么您可以执行以下操作:
ComPortSelectBox.setItems(*availableComPorts.map(ComPort::portName).toTypedArray())
UPD。您没有提及正在使用的Java。我以为是Java 8。