Статические константы perl
Можно ли объявить статические константы hashrefs в Perl? Я попробовал это с модулями Readonly и Const::Fast следующим образом, но получаю сообщение об ошибке "Попытка переназначить переменную только для чтения", когда я вызываю подпрограмму несколько раз.
use Const::Fast;
use feature 'state';
sub test {
const state $h => {1 => 1};
#...
}
1 ответ
Решение
const
это функция, и вы вызываете ее каждый раз test
называется. Это должно сделать свое дело.
sub test {
state $h;
state $initialized;
const $h => ... if !$initialized++;
# ...
}
поскольку $h
всегда имеет истинное значение, мы можем использовать следующее:
sub test {
state $h;
const $h => ... if !$h;
# ...
}
Конечно, вы все еще можете использовать старый способ создания постоянных переменных в лексической области.
{
const my $h => ...;
sub test {
# ...
}
}