Kotlin Smart Cast не работает, но только с функцией оператора - PullRequest
0 голосов
/ 22 апреля 2020

Ниже приведен пример этой проблемы. Почему я не могу вызвать поставщика с помощью функции оператора? Если я сделаю поставщика ненулевым Supplier<Int>, у меня не будет проблем с поиском

operator fun <T> Supplier<T>.invoke(): T = this.get()

val supplier: Supplier<Int>? = (Supplier<Int> { 5 })

if (supplier != null) {
    // Fails: Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type Supplier<Int>?
    supplier() 
    supplier.invoke() // fine, smart casts
    supplier.get() // fine, smart casts
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...