How can you create private/public variable and functions using Moose?
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.
精彩评论