Perl 如何使用Moose创建私有/公共变量和函数?
我正在浏览Perl 如何使用Moose创建私有/公共变量和函数?,perl,oop,moose,Perl,Oop,Moose,我正在浏览Moose食谱,但我仍然看不出是否可以使用它创建私有变量和函数?可能吗?如果是,如何使用Moose创建它们?在标识符前面加上\u以将函数/变量等标记为私有。这是在有关范围的部分中记录的,大约在文档的中间。 理智的程序员和一些工具(源代码解析器/文档)尊重这一点,但编译器并不强制执行。参见。如daxim所指出的,私有方法有“ux”前缀。因为属性(实例变量)会生成现成的getter方法(如果rw也生成setters方法),所以您应该执行以下操作: has 'myvariable' =>
Moose
食谱,但我仍然看不出是否可以使用它创建私有变量和函数?可能吗?如果是,如何使用Moose创建它们?在标识符前面加上\u
以将函数/变量等标记为私有。这是在有关范围的部分中记录的,大约在文档的中间。
理智的程序员和一些工具(源代码解析器/文档)尊重这一点,但编译器并不强制执行。参见。如daxim所指出的,私有方法有“ux”前缀。因为属性(实例变量)会生成现成的getter方法(如果rw也生成setters方法),所以您应该执行以下操作:
has 'myvariable' => (
is => 'ro',
writer => '_myvariable',
init_arg => undef,
# other options here
);
通过这种方式,您可以在类/实例中设置该属性,而不能从外部设置该属性。如果只读访问太多,也可以将其标记为“私有”:
如果愿意,您可以查看MooseX::Privacy,它是实现这一点的扩展。但是,私有方法并不是真正私有的,因为它们将死亡,而不是在调度中被跳过。
has '_myvariable' => (
is => 'ro',
writer => '_set_myvariable'
init_arg => undef,
# other options here
);