首页 > 解决方案 > 无法到达函数中的类参数

问题描述

我无法在类函数中达到类参数(应用程序)。请解释一下这背后的原因是什么?为什么参数可以在类体内访问,但不能从类函数中访问?

class VM_MainActivity(application: Application) : AndroidViewModel(application) {

val taskEntities:List<TaskEntity>?= Repository(application.applicationContext).taskEntities //"application" is reachable

  fun fillWithSampleData() {
    Repository(**application**.applicationContext).fillDBwithSampleData()  //error: Unresolved refernce: application
}

}

标签: functionkotlinparameter-passing

解决方案


在您的代码中,application是传递给构造函数的参数。它仅在构造实例时可用:在运行任何init { }块和初始化任何属性时。(后者是您可以使用它来初始化的原因taskEntities。)之后它不会持续存在。

如果您希望您的实例“记住”参数的值,请在其前面添加val(或var)以使其成为属性:

class VM_MainActivity(val application: Application) // …

推荐阅读