首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Moo处理=>的“角色”不工作

Moo处理=>的“角色”不工作
EN

Stack Overflow用户
提问于 2014-12-12 22:03:24
回答 1查看 499关注 0票数 0

在我的一生中,我无法理解为什么这不像文档所说的那样起作用。我在谷歌上搜索了这个问题,查看了源代码,等等。这是一个错误,还是我做错了什么,我就是看不见。

下面是代码:#!/usr/bin/

代码语言:javascript
复制
use strict;
use warnings;

package Model;

use Moo::Role;

has ObjectID => (
    is => 'rw'
);

package Object;

use Moo; 
use namespace::clean;

has model => (
    is => 'rw',
    handles => 'Model'
);

package main;

my $xo = Object->new;
$xo->ObjectID(12345);

exit;

试图跑

代码语言:javascript
复制
perl -MCarp::Always t/moohandles.t

拿着这个

代码语言:javascript
复制
Attempted to access 'model' but it is not set at (eval 26) line 20.
    Object::_assert_model('Object=HASH(0x1dfd118)') called at (eval 25) line 17
    Object::ObjectID('Object=HASH(0x1dfd118)', 12345) called at t/moohandles.t line 27
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-12 23:07:24

委托实际上扩展了$xo->ObjectID方法对$xo->model->ObjectID的调用。但$xo->model目前尚未设置。您可能希望将其默认为消耗Model角色的对象。

就像这样:

代码语言:javascript
复制
use strict;
use warnings;

{
  package Model;
  use Moo::Role;
  has ObjectID => (
    is => 'rw',
  );
}

{
  package ModelClass;
  use Moo;
  with 'Model';
}

{
  package Object;
  use Moo;
  has model => (
    is => 'rw',
    handles => 'Model',
    builder => sub { ModelClass->new },
  );
}

my $xo = Object->new;
$xo->ObjectID(12345);
print $xo->ObjectID, "\n";
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27452825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档