Найти тему

Разница между const и val


Оба слова используются для объявления неизменяемой переменной. Так в чем же разница?

const используется для объявления тех свойств, которые являются неизменяемыми по своей природе, т.е. они должны определяться во время компилирования. Во время выполнения константу нельзя объявить и проинициализировать.

Для констант есть несколько требований:

— Должна быть на уровне top-level или членом object или companion object

— Это должна быть строка или примитивный тип;

— Без кастомных геттеров.

Из этого следует, что мы не можем сделать константой какую-то функцию или класс, потому что они инициализируются в рантайме.

val мы можем инициализировать в рантайме. Например, можно в коде написать что-то в стиле valCatName = getCatName() и оно будет работать.

Зачем использовать const, если можно всегда использовать val? Когда мы используем константу, то она создается во время компиляции и не будет никаких дополнительных расходов во время выполнения.
Около минуты
189 читали