一、无参数的函数参数
1、回调
//定义
interface OnClickListener {
fun onClick()
}
private fun setOnClickListener(listener: OnClickListener) {
}
//使用
setOnClickListener(object : OnClickListener {
override fun onClick() {
}
})
2、闭包
//定义
private fun setOnClickListener(listener: () -> Unit) {
}
//使用
setOnClickListener {
}
二、一个参数的函数参数
//定义
interface OnClickListener {
fun onClick(index: Int)
}
private fun setOnClickListener(listener: (index: Int) -> Unit) {
}
//一个参数可以使用it替代参数
setOnClickListener {
Log.d("TAG", "onClick: $it")
}
三、两个参数的函数参数
//定义
interface OnClickListener {
fun onClick(index: Int, item: String)
}
private fun setOnClickListener(listener: (index: Int, item: String) -> Unit) {
}
//使用
setOnClickListener { index, item ->
Log.d("TAG", "onClick: $index")
Log.d("TAG", "onClick: $item")
}
四、函数参数有返回值
//定义
interface OnClickListener {
fun onClick(index: Int, item: String): Boolean
}
private fun setOnClickListener(listener: (index: Int, item: String) -> Boolean) {
}
//使用
setOnClickListener { index, item ->
Log.d("TAG", "onClick: $index")
Log.d("TAG", "onClick: $item")
true
}