3

google codelab Android Room with a View - Kotlinには次のスニペットがあります。

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

    // ...

    private val coroutineContext: CoroutineContext
       get() = parentJob + Dispatchers.Main

    private val scope = CoroutineScope(coroutineContext)

    // ...

}

そして、この回答から私が理解していることから、カスタムゲッターは毎回評価されますが、割り当ては構築時にのみ評価されます。実際には、scope後で変更されない値を取るので、カスタムゲッターはどのような用途に使用されcoroutineContextますか?

4

2 に答える 2

2

この例では、取り除くことができると思います

private val coroutineContext: CoroutineContext
   get() = parentJob + Dispatchers.Main

そしてただ書く

private val scope = CoroutineScope(parentJob + Dispatchers.Main)

したがって、結果コードは次のようになります。

class WordViewModel(application: Application) : AndroidViewModel(application) {
    private var parentJob = Job()
    private val scope = CoroutineScope(parentJob + Dispatchers.Main)
    // ...
}

この場合、ゲッターを書くのはスタイルの問題だと思います。削除しても何も変わりません。

于 2019-01-18T20:22:57.120 に答える