我是kotlin的新手。我有一个带有2个重载方法的java类。一个接受一个函数,另一个接受两个
mapToEntry(Function<? super T, ? extends V> valueMapper)
和
mapToEntry(Function<? super T, ? extends K> keyMapper,
Function<? super T, ? extends V> valueMapper)
现在在kotlin中,我尝试使用两个参数调用版本(如java中):
myClass.mapToEntry(r -> r, r -> r)
但我得到编译错误。
Kotlin:意外标记(使用“;”在同一行上分隔表达式)
正确的语法是什么?
基本语法:Lambda 表达式始终括在大括号中:
val sum = { x: Int, y: Int -> x + y }
让我们用静态编程语言定义一个类似于您的函数:
fun <T, K> mapToEntry(f1: (T) -> K, f2: (T) -> K) {}
第一种可能是直接的,我们简单地如下传递两个lambdas:
mapToEntry<String, Int>({ it.length }, { it.length / 2 })
此外,很高兴知道,如果 lambda 是传递给函数的最后一个参数,则可以像这样解除参数:
mapToEntry<String, Int>({ it.length }) {
it.length / 2
}
第一个lambda在Paranthes中传递,而第二个不是。
你很接近了,你只需要用卷括号把它们包起来…
myClass.mapToEntry({r -> r}, {r -> r})
此外,您可以利用静态编程语言将it
定义为lambda的默认单个参数这一事实。假设键和值都是字符串,并且您想反转键并大写值(只是举个例子):
myClass.mapToEntry( { it.reversed() }, { it.toUpperCase() })
在Kotlin中,lambda表达式总是被大括号包围,因此
myClass.mapToEntry({ r -> r }, { r -> r })
请参阅:Lambda表达式语法
我是Kotlin的新手,很难理解下面的代码 所以这个函数叫做,它的输入参数是一个名为的函数,它是
在Kotlin中设置click侦听器时,我们可以这样写: SAM转换后,我们可以写: 但我注意到kotlin也接受: 以及 我想知道这里发生了什么?我的意思是应该使用匿名类或SAM速记之类的东西来实现。这是某种中间阶段还是什么? 任何解释或链接到资源是高度赞赏的。
Sonarqube只允许函数的7个参数。我有一个函数,它用8个参数组成字符串。 使此函数只有7个参数。我通过删除最后一个参数<code>dat</code>来拆分函数,但为了计算<code>dat</code>变量,我还需要<code>b</code>和<code>d</code>变量值。因此,在函数返回后,我需要<code>b</code>和<code>d</code>的值来计算<code>da
静态编程语言全局函数: 用java调用此函数: 它会给出以下错误:无法解析方法'show WarningDialog(com.us.stickermaker.backgroundRemover.##################################################################################################### 该
我需要制作两个lambda函数,一个用参数调用另一个,被调用的函数将参数打印出来。我很难让它工作:第一个函数: 请告知我应该在被调用函数中输入什么代码才能接收参数“hello Jenny”?非常感谢。