小编SES*_*SES的帖子

Moose角色中的方法名称冲突

我想要实现的是创建一个导入多个角色的Moose类.这是我多年来一直在做的事情没有问题,但我目前仍然坚持为什么下面的简单示例会产生方法名称冲突.

package logrole;

use Moose::Role;
use POSIX;
use namespace::autoclean;

package otherrole;

use Moose::Role;
use File::Temp;
use namespace::autoclean;

package myclass;

use Moose;
use namespace::autoclean;
with 'logrole', 'otherrole'; 

package main;

use strict;
use warnings;
use myclass;
Run Code Online (Sandbox Code Playgroud)

运行这个给出:

Due to method name conflicts in roles 'logrole' and 'otherrole', the methods 'SEEK_CUR', 'SEEK_END', and 'SEEK_SET' must be implemented or excluded by 'myclass' at /home/user/perl5/perlbrew/perls/perl-5.22.1/lib/site_perl/5.22.1/x86_64-linux/Moose/Exporter.pm line 419
Moose::with('logrole', 'otherrole') called at roles.pl line 29
Run Code Online (Sandbox Code Playgroud)

根据文档,您可以在使用如下角色时排除方法名称:

package logrole;

use Moose::Role;
use POSIX;
use namespace::autoclean; …
Run Code Online (Sandbox Code Playgroud)

oop perl moose

5
推荐指数
1
解决办法
160
查看次数

标签 统计

moose ×1

oop ×1

perl ×1