为什么我不能说:val list = properties.map((key,value) - >"$ key = $ value")

Eri*_*luk 1 kotlin

我可以说在科特林

//sweet
for ((key,value) in System.getProperties())
    println("$key = $value")
Run Code Online (Sandbox Code Playgroud)

但我不能说

//sour
val properties = System.getProperties()
val list = properties.map((key,value) -> "$key = $value")
Run Code Online (Sandbox Code Playgroud)

什么是Scot中的Kotlin等价物properties.map{case (key, value) => s"$key = $value"}

mfu*_*n26 7

在Kotlin 1.0中你可以说:

val properties = System.getProperties()
val list = properties.map { "${it.key} = ${it.value}" }
Run Code Online (Sandbox Code Playgroud)

如果您希望将地图条目解压缩为单独的值,您可以说:

val properties = System.getProperties()
val list = properties.map { val (key, value) = it; "$key = $value" }
Run Code Online (Sandbox Code Playgroud)

在Kotlin 1.1中,您现在可以使用解构声明语法来解包传递给lambda的参数"(Kotlin 1.1中的新功能 - Kotlin编程语言):

val properties = System.getProperties()
val list = properties.map { (key,value) -> "$key = $value" }
Run Code Online (Sandbox Code Playgroud)

  • 这里提到:http://blog.jetbrains.com/kotlin/2015/03/kotlin-m11-is-out/"Lambda Syntax Restricted(for future enrichment)"部分 (2认同)