if (countryCodeValue == "de"){
val geocoder = Geocoder(this, Locale.GERMAN)
}else{
val geocoder = Geocoder(this, Locale.ENGLISH)
}
try {
val addresses = geocoder...
geocoder
显示Unresolved reference
,但是为什么?
我真的需要这样,尤其是在其他一些情况下,否则变通办法会由于某些原因而消耗更多处理能力
答案 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
)