android – Kotlin:功能类型不匹配

android – Kotlin:功能类型不匹配,第1张

概述我在编译时遇到错误: 类型不匹配:推断类型是(String,Boolean) – >除了((String,Boolean) – > Unit)?预计 我的类型宣言是 private val ConsisFilter_Click = { filterText: String, isStrictSearch: Boolean -> try { //My Codes } 我在编译时遇到错误:

类型不匹配:推断类型是(String,Boolean) – >除了((String,Boolean) – > Unit)?预计

我的类型宣言是

private val ConsisFilter_Click = { filterText: String,isstrictSearch: Boolean ->    try {        //My Codes    }    catch (e: Exception) {        try {            alert{}.show()        }catch (ignored: Exception) {}    }}var ConsisFilterClickEvent:((filterText: String,isstrictSearch: Boolean) -> Unit)? = null

像这样的assigninkg

inputDialog!!.ConsisFilterClickEvent = ConsisFilter_Click

我在其他地方遵循相同的模式,但没有得到任何错误.只有这个特定的部分才会产生问题.难道我做错了什么.请帮我.

注意:如果我将ConsisFilter_Click的所有代码(try catch块的代码)放入一个单独的函数中,只需从ConsisFilter_Click调用该函数,那么每个都可以正常工作

谢谢

解决方法 你不能将ConsisFilter_Click分配给变量ConsisFilterClickEvent,因为它的隐式类型是(String,Boolean) – >任何而不是(String,Boolean) – >单元.由于catch-block的返回类型是Unit,但try-block的最后一个语句的返回类型不是Unit,如果不使用显式类型变量,则会使lambda的返回类型为Any.

您必须明确定义变量ConsisFilter_Click的类型,如下所示:

val ConsisFilter_Click: (filterText: String,isstrictSearch: Boolean) -> Unit  = {    filterText: String,isstrictSearch: Boolean ->    try {        //My Codes    }    catch (e: Exception) {        try {            alert{}.show()        }catch (ignored: Exception) {}    }}
总结

以上是内存溢出为你收集整理的android – Kotlin:功能类型不匹配全部内容,希望文章能够帮你解决android – Kotlin:功能类型不匹配所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1122605.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存