Android kotlin - объявляет значение val в условии if else - PullRequest
0 голосов
/ 21 сентября 2018
if (countryCodeValue == "de"){
    val geocoder = Geocoder(this, Locale.GERMAN)
}else{
    val geocoder = Geocoder(this, Locale.ENGLISH)
}



try {
    val addresses = geocoder...

geocoder показывает Unresolved reference, но ПОЧЕМУ?

Мне действительно нужно, чтобы так было, особенно в некоторых других случаях, иначе обходные пути потребляют больше вычислительной мощности по причинам

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Поскольку вы объявляете его внутри каждой ветви оператора, это означает, что он является локальным только для этой ветви.То, что они имеют одинаковое имя, не делает их одной и той же переменной.

Используйте это:

val geocoder = if (countryCodeValue == "de") {
    Geocoder(this, Locale.GERMAN)
} else {
    Geocoder(this, Locale.ENGLISH)
}

Выражения Kotlin if-else также являются операторами, то есть вы можете устанавливать переменные с ними.

0 голосов
/ 21 сентября 2018

Просто объявите geocoder так:

val geocoder = Geocoder(
    this, 
    if(countryCodeValue == "de") Locale.GERMAN else Locale.ENGLISH
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...