Kotlin 中的 Float.isNaN "接收器类型不匹配"错误



我是Kotlin的新手,对Kotli的内置FLoat.isNaN和Double.isNaN函数有问题。当使用Float.isNaN函数测试浮点数组列表的NaN相等时,我收到错误:

未解析的引用。由于接收器类型不匹配,以下候选者均不适用:

  • public内联fun Double.isNaN((:在kotlin public中定义的布尔值
  • 内联fun Float.isNaN((:在kotlin中定义的布尔值

下面列出了伪代码,感谢您的帮助:

var scores = arrayListOf<Float>()
val todaysResult = scores[0]
if(Float.isNaN(todaysResult)) {
todayResultNumericTextView!!.text = "-"
} else {
todayResultNumericTextView!!.text = Math.round(todaysResult).toString() + "%"
}

isNaNFloatDouble上的一个扩展函数(与Java不同,它不是一个"静态"方法!(这意味着您必须使用值作为接收器来调用它。

fun Double.isNaN(): Boolean
fun Float.isNaN(): Boolean

代替

Float.isNaN(todaysResult)

你想要

todaysResult.isNaN()

这也由错误消息表示:

kotlin中定义的public inline fun Double.isNaN(): Boolean
kotlin中定义的public inline fun Float.isNaN(): Boolean

语法Float.isNaN()表示此函数采用类型为Float接收器


另请参阅:扩展(Kotlin参考(

最新更新