首先,我想澄清一下我的问题是针对个人代码风格的偏好。
假设我有一个以接口为参数的方法,并且该接口中有两个方法。
在kotlin中,匿名实现该接口,我们会遇到类似的情况
client.execute(object : Callback() {
override fun onResponse(response: Response) {/*...*/}
override fun onError(error: Error) {/*...*/}
})
我想做的是为client
对象创建扩展,该扩展将采用两个不同的接口,例如
interface ClientResponse{fun onResponse(response: Response)}
interface ClientError{fun onError(error: Error)}
,然后新的execute
方法看起来像
client.executeCustom(
{response -> /*...*/},
{error -> /*...*/}
})
这种SAM解决方案。
有可能吗?
答案 0 :(得分:2)
这应该是一个相当琐碎的扩展,您可以立即使用两个lambda参数,然后在其中创建一个$("table#mytable tr").on("click", function(e) {
// if e.target == "<a href=''>" element, Then "return;"
// else -> do other stuff
});
实例,以将调用委托给这些lambda:
Callback
这样,您甚至不需要引入新的界面。