Можешь объяснить отличия между `var` и `val` объявлениями переменных в Kotlin и описать, когда следует использовать каждое из них? — ДейлиПреп