android-kotlin infix无法使用一个参数扩展功能

时间:2019-04-27 04:46:31

标签: kotlin infix-notation

看看我拥有中缀的这个简单扩展功能:

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.  

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

enter image description here

它不是前缀,并紧跟rule for infix之后:

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

我在做什么错?

更新:
我也尝试过此方法,但是通过显式调用引用类来进行工作: enter image description here

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

1 个答案:

答案 0 :(得分:1)

要使固定函数起作用,应在其左侧放置一个实际的对象实例:

val result = someView isValidColor "#FFFFFF"