kotlin - 访问具有相同变量名的匿名类中的外部作用域局部变量
问题描述
局部变量在函数中声明。函数在该变量声明之后还有一个匿名类。匿名类有一个自己的函数,其参数与外部作用域局部变量同名。由于名称相同,没有编译器错误。而且我无法从匿名类的函数中引用外部范围的局部变量,因为它指的是自己的变量。
如何访问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
}
解决方案
对我来说,编译器给出了同名错误。将参数名称更改为 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
}
推荐阅读
- javascript - Chrome 75,中断变换原点动画
- node.js - 使用 Nodejs 的个人号码发送 WhatsApp 消息
- python-3.x - Python不同行异步显示不同的打印输出
- java - 为什么 a1 变量不是初始值?
- azure - 如何在 Azure DevOps 专用代理池中禁用容器作业
- python - 我正在用 Python 制作一个不和谐的琐事机器人。机器人怎么可能看到变量是否等于某人在聊天中键入的内容?
- hibernate - 使用 TRANSIENT grails GORM 休眠对象
- javascript - d3 SVG 未在移动设备上显示 (iOS)
- android - 在片段中使用 BLE 函数而不是 MainActivity
- c# - 在 Word 文档中自动调整形状