在我的最后一个问题中,我问了许多不相关的事情,并且不能接受多个答案,只回答一些问题,所以这里明确(我希望)定义了关于(Moo)属性的问题。
use 5.010;
use strict;
use warnings;
package SomeMoo;
use Moo;
has $_ => ( is => 'rw', predicate => 1) for (qw(a1 a2 nn xx));
package SomeMoose;
use Moose;
has $_ => ( is => 'rw', predicate => "has_".$_) for (qw(a1 a2 nn xx));
package main;
use Data::Dumper;
my $omoo = SomeMoo->new(a1 => "a1val", a2 => "a2val", xx=>"xxval");
say Dumper $omoo;
# $VAR1 = bless( {
# 'a2' => 'a2val',
# 'a1' => 'a1val',
# 'xx' => 'xxval'
# }, 'SomeMoo' );
#for Moose:
my $omoose = SomeMoose->new(a1 => "a1val", a2 => "a2val", xx=>"xxval");
say Dumper $omoose;
#as above, only blessed to package 'SomeMoose'.
#in both cases can do the next, for getting an (partial) list "attributes"
say $_ for keys (%$omoose); #or %$omoo
#anyway, in Moose i can
say "all attributes";
say $_->name for $omoose->meta->get_all_attributes();
#what prints
# all attributes
# nn
# a2
# a1
# xx
因此,受祝福的对象引用了一个仅包含已设置属性的对象。
问题:
- 为什么
$self
引用,(所以包含%$self
)只有设置的属性,而不是全部,例如nn
来自示例代码的属性?(当bless
唯一将reference
与package
为什么$omoo
不包含所有包变量相关联时?)驼鹿从哪里知道它?) - 在 Moo 的情况下如何获取 all_attributes?
显然我错过了一些基本知识.. :(