在Kotlin,我可以说
SELECT tableId
FROM exampleTable
WHERE tableId = 1 OR tableId = 2
但我不能说
//sweet
for ((key,value) in System.getProperties())
println("$key = $value")
Scala中等效于//sour
val properties = System.getProperties()
val list = properties.map((key,value) -> "$key = $value")
的Kotlin是什么?
答案 0 :(得分:7)
在Kotlin 1.0中你可以说:
TextBox
如果您希望将地图条目解压缩为单独的值,您可以说:
val properties = System.getProperties()
val list = properties.map { "${it.key} = ${it.value}" }
在Kotlin 1.1"您现在可以使用destructuring declaration语法解压缩传递给lambda的参数#34; (What's New in Kotlin 1.1 - Kotlin Programming Language):
val properties = System.getProperties()
val list = properties.map { val (key, value) = it; "$key = $value" }
答案 1 :(得分:2)
你的问题绝对没有推论。
在scala中你是doc:
import collection.JavaConversions._
val properties = System.getProperties()
val list = properties.map{case (key,value) => s"$key = $value"}
至于你的意见。
从Scala年代开始,到现在探索Kotlin,我倾向于更喜欢Kotlin的力量和简洁性,但是,考虑到我仍然处于学习模式,能够更好地推断出事情会更好。
代码中的问题与类型推断无关。甚至语法都没有。
答案 2 :(得分:0)
请更正lambda表达式和解包的语法:
val properties = mapOf(1 to "First", 2 to "Second")
val list = properties.map {val (value, key) = it; "$key = $value"}
答案 3 :(得分:0)
有一个Kotlin功能已经计划好但在1.0中不可用,这将允许写{(键,值) - > “$ key = $ value”}解压缩类型对象 - cypressious
感谢@cypressious,这正是我所希望的。基本上答案是Kotlin仍然在不断发展,人们仍在努力抛弃酷炫的东西。
现在我找到了
//savory
val properties = System.getProperties()
val list = properties.map {property -> "${property.key} = ${property.value}"}
非常接近。