开发者

How can you create private/public variable and functions using Moose?

开发者 https://www.devze.com 2023-02-25 17:57 出处:网络
I am going through the Moose recipes and开发者_运维技巧 I still cannot see if I can create private variables and functions using it? Is it possible? If yes how to create them with Moose?Like daxim poi

I am going through the Moose recipes and开发者_运维技巧 I still cannot see if I can create private variables and functions using it? Is it possible? If yes how to create them with Moose?


Like daxim points out, private methods have the "_" prefix. Because attributes (instance variables) generate getters methods (and if rw also setters methods) out of the box, you should do this:

has 'myvariable' => (
    is       => 'ro',
    writer   => '_myvariable',
    init_arg => undef,
    # other options here
);

This way you can set this attribute within your class/instance and it's not settable from outside. If read-only access is too much, you can also mark it "private":

has '_myvariable' => (
    is       => 'ro',
    writer   => '_set_myvariable'
    init_arg => undef,
    # other options here
);


Prefix an identifier with an _ to mark the function/variable etc. as private. This is documented in perlstyle in the section about scope, about in the middle of the document.

This is respected by sane programmers and some tools (source parsers/documentation), but not enforced by the compiler. See perlmodlib#NOTE.

0

精彩评论

暂无评论...
验证码 换一张
取 消