pio*_*rek 4 java syntax lambda kotlin kotlin-interop
我是kotlin的新手.我有一个带有2个重载方法的java类.一个接受一个功能,另一个接受两个功能
mapToEntry(Function<? super T, ? extends V> valueMapper)
Run Code Online (Sandbox Code Playgroud)
和
mapToEntry(Function<? super T, ? extends K> keyMapper,
Function<? super T, ? extends V> valueMapper)
Run Code Online (Sandbox Code Playgroud)
nowm in kotlin,我试图调用带有2个参数的版本(如java中所示):
myClass.mapToEntry(r -> r, r -> r)
Run Code Online (Sandbox Code Playgroud)
但我得到编译错误.
Kotlin:意外的令牌(使用';'来分隔同一行上的表达式)
什么是正确的语法?
在Kotlin中,lambda表达式总是被花括号括起来,所以就是这样
myClass.mapToEntry({ r -> r }, { r -> r })
Run Code Online (Sandbox Code Playgroud)
请参阅:Lambda表达式语法
你已经很接近了,你只需要把它们用花括号括起来......
myClass.mapToEntry({r -> r}, {r -> r})
Run Code Online (Sandbox Code Playgroud)
此外,您还可以利用 Kotlin 定义it为 lambda 的默认单个参数这一事实。假设键和值都是字符串,并且你想反转键并将值大写(只是举个例子):
myClass.mapToEntry( { it.reversed() }, { it.toUpperCase() })
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2083 次 |
| 最近记录: |