加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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->()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读