

lambda表达式
Java中,如果要使用View.setOnClickListener(),首先需要编写一个OnClickListener接口:
public interface OnClickListener{
void onClick(View v);
}
然后需要编写一个匿名内部类去实现这个接口:
view.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
Toast.makeText(v.getContext(),"click",Toast.LENGTH_SHORT).show();
}
});
把上面的代码转换为kotlin:
view.setOnClickListener(object: onClickListener{
override fun onClick(v:View){
toast("click")
}
})
一个lambda表达式通过参数的形式被定义在箭头的左边,然后在箭头的右边返回结果值,在上面的例子中,我们接收一个view,然后返回一个Unit(没有东西),所以,可以简化为:
view.setOnClickListener({view - > toast("click")})
当我们定义了一个方法,我们必须使用大括号包围它,然后在箭头的左边指定参数,在右边返回函数执行的结果,如果左边的参数没有使用,可以省略为:
view.setOnClickListener({toask("click")})
如果这个函数的最后一个参数是一个函数,我们可以把这个函数移动到小括号外:
view.setOnClickListener(){toast("click")}
如果这个函数只有一个参数,我们可以省略这个小括号:
view.setOnCliclListener{toast("click")}
网友评论