Kotlin支持解构声明:
val (a, b) = Pair(1,2)
Run Code Online (Sandbox Code Playgroud)
这类似于Python的可迭代解包:
a, b = (1, 2)
Run Code Online (Sandbox Code Playgroud)
Python还有一个splat/spread运算符,允许您使用函数参数执行类似的操作:
def f(a, b): pass
pair = (1,2)
f(*pair)
Run Code Online (Sandbox Code Playgroud)
kotlin有相似的能力吗?显然,您可以手动解压缩结构:
f(pair.component1(), pair.component2())
Run Code Online (Sandbox Code Playgroud)
小智 15
不,这只适用于数组和vararg函数
val foo = arrayOf(1, 2, 3)
val bar = arrayOf(0, *foo, 4)
Run Code Online (Sandbox Code Playgroud)
Ing*_*gel 10
添加@Ivan的答案,以下是相关问题:
1)在函数调用中传播非vararg参数的运算符:
https://youtrack.jetbrains.com/issue/KT-6732
2)lambda参数的解构:
https://youtrack.jetbrains.com/issue/KT-5828
你可以投票给他们.
更新:
lambda参数的解构在Kotlin 1.1中实现.
| 归档时间: |
|
| 查看次数: |
3925 次 |
| 最近记录: |