我是kotlin的新手 . 我有一个带有2个重载方法的java类 . 一个接受一个功能,另一个接受两个功能
mapToEntry(Function<? super T, ? extends V> valueMapper)
和
mapToEntry(Function<? super T, ? extends K> keyMapper,
Function<? super T, ? extends V> valueMapper)
nowm in kotlin,我试图调用带有2个参数的版本(如java中所示):
myClass.mapToEntry(r -> r, r -> r)
但我得到编译错误 .
Kotlin:意外的令牌(使用';'来分隔同一行上的表达式)
什么是正确的语法?
3 回答
在Kotlin中,lambda表达式总是被花括号括起来,所以就是这样
见:Lambda Expression Syntax
你很亲密,你只需要用花括号包裹它们......
此外,您可以利用Kotlin将
it
定义为lambda的默认单个参数这一事实 . 假设键和值都是字符串,并且您想要反转键和大写值(只是组成一个例子):Basic Syntax :Lambda表达式始终用大括号括起来:
示例
让我们在Kotlin中定义一个类似于你的函数:
first 可能是直截了当的,我们只是传递两个lambdas,如下所示:
另外,最好知道如果lambda是传递给函数的最后一个参数,它可以像这样提取出parantheses:
第一个lambda在parantheses内部传递,而第二个lambda不在 .