Lambda表达式简化OnClickListener

interface OnClickListener {
fun onClick()
}

class View {
var listener: OnClickListener? = null;

/*
* 传统方式
* */
fun setOnClickListener(listener: OnClickListener) {
    this.listener = listener
}

fun doSth() {
    // some case:
    listener?.onClick()
}


// lambda表达式当一个函数 (Int)->Unit 
// 函数可以是一种类型 
// 一个变量可以是函数类型的

// 但是这种方式仅适用于有一个回调函数的情况

var listener1:(Int)->Unit

/*
* 声明lambda方式,listener: () -> Unit
* */
fun setOnClickListener(listener: (Int) -> Unit) {
    this.listener1=listener
}

 fun doSth(number : Int) {
    // some case:
    listener?.invoke(number)
}

}

你可能感兴趣的:(Lambda表达式简化OnClickListener)