如何使用Moose创建私有/公共变量和函数?

时间:2011-04-13 06:40:51

标签: perl oop moose

我正在阅读Moose食谱,我仍然无法看到我是否可以使用它创建私有变量和函数?可能吗?如果是,如何使用Moose创建它们?

2 个答案:

答案 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
);