ругается на переменную
выдает ошибку при попытке записать в переменную значение : This variable must either have a type annotation or be initialized
private fun InitAuth () {
// Retrieves the user's saved password for your app from their
// password provider.
val getPasswordOption = GetPasswordOption()
// Get passkey from the user's public key credential provider.
// val requestJson
lateinit var requestJson
val getPublicKeyCredentialOption = GetPublicKeyCredentialOption(
requestJson = requestJson
)
}
А если не объявлять переменную, то будет писать ошибку: Unresolved reference: requestJson
вот тут указано именно так написать - без указания значения и без указания типа и без инициализации пермеренной
Ответы (1 шт):
Давайте я разберу код по строкам прямо.
lateinit var requestJson
Объявляем переменную lateinit var
, т.е. без типа и с поздней инициализацией, и не присваиваем ей ничего.
val getPublicKeyCredentialOption = GetPublicKeyCredentialOption(
requestJson = requestJson
)
Здесь мы вызываем функцию GetPublicKeyCredentialOption
и в качестве параметра функции под названием requestJson
передаём нашу переменную requestJson
. Тут название параметра функции и название переменной совпадают, но это не должно вас смущать. Можно заменить это понятным примером, который даст ту же самую ошибку:
lateinit var requestJson
val x = requestJson
Что мы тут хотим присвоить переменной x
? Отсутствующее значение неизвестного типа. Если бы хотя бы тип переменной был известен, компилятору можно было бы инициализировать её значением по умолчанию для данного типа. Но в данном случае у компилятора нет вообще никаких подсказок, что же за значение должно быть в этой переменной и он вас прямо просит указать хотя бы одну из таких подсказок.
Надеюсь, так понятнее, откуда возникает ошибка.
P.S. Я Kotlin
вообще не знаю, руководствуюсь знанием других языков программирования и здравым смыслом.