首页 > 解决方案 > android - kotlin 中缀不适用于一个参数扩展功能

问题描述

看看我有中缀的这个简单的扩展函数:

infix fun View.isValidColor(hexColor: String?): Boolean {
    var isValid = true
    return hexColor?.let {
        try {
            Color.parseColor(it)
        } catch (e: Throwable) {
            isValid = false
        }
        isValid
    } ?: false
}

//notice how i have infix the extension meaning brackets are not needed, hopefully making it easier to read.  

现在让我们看看用法和我尝试过的内容:

在此处输入图像描述

它不是中缀,它遵循中缀规则

  1. 必须是成员函数或扩展函数。
  2. 它们必须有一个参数。
  3. 参数不能接受可变数量的参数,并且不能有默认值。

我究竟做错了什么 ?

更新:
我也试过这个,但它通过显式调用引用类来工作: 在此处输入图像描述

因为现在我使用显式对象为什么它失败了?ivLogo 是从 kotlin 合成的 ImageView。

标签: androidkotlininfix-notationkotlin-extension

解决方案


为了使中函数起作用,应该在它的左边放置一个对象的实际实例:

val result = someView isValidColor "#FFFFFF"

推荐阅读