perl – 如何声明一个类在MooseX :: Declare中使用多个角色?
发布时间:2020-12-15 21:43:48 所属栏目:大数据 来源:网络整理
导读:鉴于角色Fooable和Barable都已定义,我怎么说FooBar类可以做Fooable和Barable?我没问题 #!/usr/bin/perluse MooseX::Declare;role Fooable { method foo { print "foon" }}role Barable { method bar { print "barn" }}class Foo with Fooable {}class Bar
鉴于角色Fooable和Barable都已定义,我怎么说FooBar类可以做Fooable和Barable?我没问题
#!/usr/bin/perl use MooseX::Declare; role Fooable { method foo { print "foon" } } role Barable { method bar { print "barn" } } class Foo with Fooable {} class Bar with Barable {} package main; use strict; use warnings; Foo->new->foo; Bar->new->bar; 但是当我尝试添加时 class FooBar with Fooable,Barable {} 我得到的不是有用的错误 expected option name at [path to MooseX/Declare/Syntax/NamespaceHandling.pm] line 45 为了向自己证明我并不疯狂,我用Moose重写了它.这段代码有效(但比罪恶更丑): #!/usr/bin/perl package Fooable; use Moose::Role; sub foo { print "foon" } package Barable; use Moose::Role; sub bar { print "barn" } package Foo; use Moose; with "Fooable"; package Bar; use Moose; with "Barable"; package FooBar; use Moose; with "Fooable","Barable"; package main; use strict; use warnings; Foo->new->foo; Bar->new->bar; FooBar->new->foo; FooBar->new->bar; 解决方法
显然你需要括号:
#!/usr/bin/perl use MooseX::Declare; role Fooable { method foo { print "foon" } } role Barable { method bar { print "barn" } } class Foo with Fooable {} class Bar with Barable {} class FooBar with (Fooable,Barable) {} package main; use strict; use warnings; Foo->new->foo; Bar->new->bar; FooBar->new->foo; FooBar->new->bar; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |