Perl 静态常量 hashrefs

标签 perl static constants hashref

是否可以在 Perl 中声明静态常量 hashrefs? 我按照以下方式尝试使用 Readonly 和 Const::Fast 模块,但是当我多次调用 sub 时收到错误消息“尝试重新分配只读变量”。

use Const::Fast;
use feature 'state';

sub test {
  const state $h => {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 {
      # ...
   }
}

关于Perl 静态常量 hashrefs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21958868/

相关文章:

regex - Perl正则表达式-如何使其不那么贪婪?

perl - 在 Windows 10 上使用草莓 perl 安装 Net::Pcap

Java - 回到静态方法的继承

perl - 如何通过方法返回的引用将哈希元素插入到字符串中?

c++ - DLL 到 Lib 的帮助

c# - 我应该如何清除通用静态类中的字段?

scala - 在常量表达式中使用 scala 常量

c++ - 问候,我的代码中有语法问题。你能帮助我吗?

C中双向链表中的const结构正在被修改

algorithm - 显式包名称和屏蔽同一语句中的早期声明