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

问题描述

| 我正在查看“ 0”配方,但仍然看不到是否可以使用它创建私有变量和函数?可能吗?如果是,如何用Moose创建它们?     

解决方法

就像daxim指出的那样,私有方法具有\“ _ \”前缀。因为属性(实例变量)开箱即用地生成getters方法(如果rw也是setters方法),则应执行以下操作:
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
);
    ,给标识符加上前缀“ 3”,以将功能/变量等标记为私有。这在perlstyle的有关范围的部分中进行了记录,大约在文档的中间。 理智的程序员和某些工具(源解析器/文档)都尊重这一点,但编译器未强制执行。请参阅perlmodlib#NOTE。