【发布时间】:2017-11-02 11:51:43
【问题描述】:
我对 kotlin lambda 表达式有点困惑。 找不到合适的答案。
在 Java 中,我可以使用以下参数设置侦听器:
myObject.setListener(new MyListener() {
@Override
public boolean doSmth(int pos, int value) {
switch(..) {
....
}
}
})
使用 lambda:
myObject.setListener((p1, p2) -> {
switch(..) {
....
}
})
在 Kotlin 中我可以这样做:
myObject.setListener{p1, p2 -> return@setListener false}
或
myObject.setListener{{p1, p2 ->
if (p1) {
return@setListener true
} else {
return@setListener false
}
}}
但它真的很丑。有什么方法可以更轻松吗? 我可以这样使用:
myObject.setListener{p1, p2 -> myFunc(p1, p2)}
但是如果我想把我的逻辑放到那个监听器中(它可能很复杂,不仅仅是if else return)
【问题讨论】:
-
你说丑,但和什么比呢?你的 java 版本是空的,所以它当然更干净......你能指定问题吗?
标签: java android lambda kotlin