Поле расширения Kotlin установить / получить с исключением - PullRequest
0 голосов
/ 28 августа 2018

Я определил расширение 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 голосов
/ 28 августа 2018

v не является функцией. Это свойство расширения.

Сделайте это вместо:

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

Зачем вам создавать свойство расширения для идентификатора представления? Я думаю, что это не лучшая идея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...