首页 > 解决方案 > 访问具有相同变量名的匿名类中的外部作用域局部变量

问题描述

局部变量在函数中声明。函数在该变量声明之后还有一个匿名类。匿名类有一个自己的函数,其参数与外部作用域局部变量同名。由于名称相同,没有编译器错误。而且我无法从匿名类的函数中引用外部范围的局部变量,因为它指的是自己的变量。

如何访问token匿名类中的外部变量?

fun function() : String {

    lateinit var token : String // outer

    accSvc.signUp("phone","email",object:AccountService.SignUpCallback {

        override fun onSignedUp(token: String /*inner*/) {
            //how to access outer 'token' here (assign inner 'token' to outer 'token') ??
            token /*outer*/ = token /*inner*/ //error on this line
        }

        override fun onSignUpFailed(error: String) {

        }

    })
    return token
}

标签: kotlin

解决方案


对我来说,编译器给出了同名错误。将参数名称更改为 t,有效。

fun function() : String {

    lateinit var token : String // outer

    accSvc.signUp("phone","email",object:AccountService.SignUpCallback {

        override fun onSignedUp(t: String /*inner*/) {
            //how to access outer 'token' here (assign inner 'token' to outer 'token') ??
            token /*outer*/ = t /*inner*/ //error on this line
        }

        override fun onSignUpFailed(error: String) {

        }

    })
    return token
}

推荐阅读