Kotlin扩展字段设置/获取异常

时间:2018-08-28 07:16:08

标签: kotlin

我已经定义了这样的kotlin扩展名:

private var View.v: Boolean
    get() = this.visibility == View.VISIBLE
    set(visible) {
        if (visible) {
            this.visibility = View.VISIBLE
        } else {
            this.visibility = View.GONE
        }
    }

但是,当我尝试使用此字段时会出现一些错误。

private var Int.v: Boolean
    get() = find<View>(this).v
    set(visible) = find<View>(this).v(visible)

例外是:

Error:(40, 35) Expression 'v' of type 'Boolean' cannot be invoked as a function. The function 'invoke()' is not found

1 个答案:

答案 0 :(得分:2)

v不是该功能。这是一个扩展属性。

执行此操作:

private var Int.v: Boolean
   get() = find<View>(this).v
   set(visible) {
     find<View>(this).v = visible 
   }

为什么要在视图ID上创建扩展属性?我认为这不是最好的主意。