关于Kotlin中clickListener函数的问询:该函数是否支持接收匿名函数作为参数
clickListener入参规则解答
你提供的Kotlin代码中,DevByteCountryPropertyListener构造器的clickListener参数完全支持接收匿名函数作为入参。
原理说明
该参数的声明类型为(countryId : String ) -> Unit,属于Kotlin的函数类型定义:
- 入参要求:仅接收1个String类型的参数,参数名标记为countryId
- 返回值要求:无返回值(对应Unit类型)
只要符合上述规则的函数,不管是具名函数、匿名函数还是lambda表达式,都可以作为该参数的合法入参。
代码示例
传入匿名函数的写法
// 直接传入匿名函数初始化监听器实例 val countryListener = DevByteCountryPropertyListener(fun(countryId: String) { // 此处编写点击事件的自定义处理逻辑 println("当前选中的国家ID为:$countryId") // 其他业务逻辑,比如跳转国家详情页、筛选国家对应内容等 })
更简洁的lambda写法(Kotlin常用写法,效果等价)
val countryListener = DevByteCountryPropertyListener { countryId -> println("当前选中的国家ID为:$countryId") }
调用逻辑说明
当你调用监听器实例的onClick方法,传入DevByteCountryProperty类型对象时,会自动提取该对象的id属性,传入你之前传入的匿名函数/lambda中执行对应的自定义逻辑。
内容的提问来源于stack exchange,提问作者Ayman Mn
相关产品推荐
相关产品推荐

