android - kotlin infix 不适用于一个参数扩展函数

j2e*_*nue 5 android function infix-notation kotlin kotlin-extension

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

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.  
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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

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

我究竟做错了什么 ?

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

既然现在我使用显式对象,为什么会失败?ivLogo 是从 kotlin 合成的 ImageView。

Ser*_*gey 8

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

val result = someView isValidColor "#FFFFFF"
Run Code Online (Sandbox Code Playgroud)