const
s - постоянные времени компиляции. Это означает, что их значение должно быть назначено во время компиляции, в отличие от val
s, где это можно сделать во время выполнения.
Это означает, что const
s никогда не могут быть назначены функции или любому класс, но только для String
или примитива.
Например:
const val foo = complexFunctionCall() //Not okay
val fooVal = complexFunctionCall() //Okay
const val bar = "Hello world" //Also okay
Я думаю, что это - вариация на Шаблон Посредника из Шаблонов разработки (Банда Четыре) - таким образом, я сказал бы, что это - допустимый способ сделать это. В Шаблоне они обсуждают это, сложное взаимодействие между средствами управления является причиной использовать его.
Править: Свяжитесь с посредником на Википедию
Я никогда не делал этого, но я часто думал о написании кода в стиле UC, с основным успешным путем первым и расширениями, помещенными как исключения, пойманные ниже. Пока не нашел повода сделать это - хотелось бы увидеть, как кто-нибудь попробует это и напишет код, даже если после эксперимента мы придем к выводу, что это ужасно, все равно будет интересно попробовать и обратиться к нему.