Android Kotlin-在if else条件内声明一个val

时间:2018-09-21 19:27:38

标签: java android kotlin

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 :(得分:4)

因为要在语句的每个分支中声明它,这意味着它仅在该分支本地。仅仅因为它们具有相同的名称并不能使它们成为相同的变量。

使用此:

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

Kotlin的if-else表达式也是语句,这意味着您可以使用它们设置变量。

答案 1 :(得分:1)

只需这样声明geocoder

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