perl – 初始化Moose类的CodeRef字段
发布时间:2020-12-15 23:28:05 所属栏目:大数据 来源:网络整理
导读:我有一个穆斯班的人 package Person; use Moose; has 'first_name' = ( is = 'rw',isa = 'Str',); has 'last_name' = ( is = 'rw',); has 'check' = ( is = 'rw',isa = 'CodeRef',); no Moose; __PACKAGE__-meta-make_immutable; 我正在另一个文件中初始化一
我有一个穆斯班的人
package Person; use Moose; has 'first_name' => ( is => 'rw',isa => 'Str',); has 'last_name' => ( is => 'rw',); has 'check' => ( is => 'rw',isa => 'CodeRef',); no Moose; __PACKAGE__->meta->make_immutable; 我正在另一个文件中初始化一个新的Person对象 use Person; my $user = Person->new( first_name => 'Example',last_name => 'User',check => sub { print "yo yon"; },); print "heren"; $user->check(); print "heren"; 这两个调试语句正在打印,但子例程中的调试消息不是. 我想知道将函数传递给构造函数的正确方法,以便我可以将匿名子例程传递给对象. 解决方法
$user-> check()相当于$user-> check.它只返回check属性的值(即coderef)而不用它做任何事情 – 就像任何其他访问者一样.此属性包含coderef的事实不会改变它.
如果要检索coderef,然后调用它,则需要另一个箭头: $user->check->() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |