Невозможно достичь параметра класса в функции - PullRequest
0 голосов
/ 05 декабря 2018

Я не могу добраться до параметра класса (приложения) в функции класса.Объясните, пожалуйста, в чем причина этого?Почему параметр доступен в теле класса, но не из функции класса?

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
}

}

1 Ответ

0 голосов
/ 05 декабря 2018

В вашем коде application - это параметр, передаваемый конструктору.Он доступен только во время создания экземпляра: при запуске любых блоков init { } и инициализации любых свойств.(Именно поэтому вы можете использовать его для инициализации taskEntities.) После этого оно не сохраняется.

Если вы хотите, чтобы ваш экземпляр «запомнил» значение параметра, добавьте val (или var), чтобы сделать его свойством:

class VM_MainActivity(val application: Application) // …
...