小编Saa*_*ash的帖子

使用 lambda 的 Kotlin setOnClickListener 语法

在 Kotlin 中设置点击监听器时,我们可以这样写:

rollButton.setOnClickListener(
    object: View.OnClickListener {
        override fun onClick(v: View?) {
            rollDice();
        }
    }
)
Run Code Online (Sandbox Code Playgroud)

SAM转换后,我们可以写:

rollButton.setOnClickListener({ v -> rollDice() })
Run Code Online (Sandbox Code Playgroud)

但我注意到 kotlin 也接受:

rollButton.setOnClickListener(View.OnClickListener() { v -> rollDice() })
Run Code Online (Sandbox Code Playgroud)

rollButton.setOnClickListener(View.OnClickListener { v -> rollDice() })
Run Code Online (Sandbox Code Playgroud)

我想知道这里发生了什么?我的意思是应该使用匿名类或 SAM 速记法setOnClickListener来实现。OnClickListener这是某种中间阶段还是什么?

任何解释或资源链接都将受到高度赞赏。

lambda android kotlin

3
推荐指数
1
解决办法
2214
查看次数

标签 统计

android ×1

kotlin ×1

lambda ×1