我正在阅读Moose
食谱,我仍然无法看到我是否可以使用它创建私有变量和函数?可能吗?如果是,如何使用Moose创建它们?
答案 0 :(得分:10)
使用_
添加标识符以将函数/变量等标记为私有。有关范围的部分中的perlstyle中记录了这一点,该文档位于文档的中间。
这是由理智的程序员和一些工具(源解析器/文档)所尊重,但不是由编译器强制执行。请参阅perlmodlib#NOTE。
答案 1 :(得分:10)
与daxim指出的一样,私有方法具有“_”前缀。因为属性(实例变量)开箱即用生成getters方法(如果rw也是setter方法),你应该这样做:
has 'myvariable' => (
is => 'ro',
writer => '_myvariable',
init_arg => undef,
# other options here
);
这样你可以在你的类/实例中设置这个属性,并且它不能从外部设置。如果只读访问权限过多,您也可以将其标记为“私有”:
has '_myvariable' => (
is => 'ro',
writer => '_set_myvariable'
init_arg => undef,
# other options here
);