Ответ скрыт в другом примере, намного позже в списке: https://v1 -0.ballerina.io / learn / by-example / constants.html
Разница между конечными переменными и константами заключается в том, что значение конечных переменных можно инициализировать во время выполнения.Однако константы должны быть инициализированы во время компиляции.
Что означает
function findFoo() returns int {
return 42;
}
public function main() {
// This works
final int foo = findFoo();
}
, однако:
function findFoo() returns int {
// this is not allowed
return 42;
}
public function main() {
const int foo = findFoo();
}
В настоящее время существует ошибка (https://github.com/ballerina-platform/ballerina-lang/issues/15044) в языковой реализации:
int foo;
// this currently doesn't work, but it should
foo = 32;
То, что использует final
, позволяет установить значение из функции (т. Е. Во время выполнения), где const нет. В настоящее время в обоих случаях требуется одначтобы установить значение, в котором объявляется переменная, но в будущей версии (когда ошибка исправлена) определение может быть позже в коде.
С другой стороны (спасибо @dhananjaya за указание на это) const
может использоваться в других конструкциях времени компиляции.