Kotlin: Read Only access of Immutable Type to an Internal Variable of a Mutable Type

I don't know if it is possible to avoid the verbosity. But, I've seen that before and it is usually declared as a property.

private val _repositories = MutableLiveData<List<Repo>>()
val repositories : LiveData<List<Repo>> 
    get() = _repositories

This is the convention, see the doc here in Names for backing properties

If a class has two properties which are conceptually the same but one is part of a public API and another is an implementation detail, use an underscore as the prefix for the name of the private property:


Following the idea of this post:

class HomeListViewModel: ViewModel(){
    val repositories: LiveData<List<Repo>> = MutableLiveData()

    init {
        repositories as MutableLiveData
        ...//Do some stuff to repositories
    }
}