gpt4 book ai didi

perl - 我如何声明一个类在MooseX::Declare中使用多个角色?

转载 作者:行者123 更新时间:2023-12-04 13:45:29 24 4
gpt4 key购买 nike

鉴于角色Fooable和Barable均已定义,我该怎么说FooBar和Fooable和Barable类呢?我没问题说

#!/usr/bin/perl

use MooseX::Declare;

role Fooable {
method foo { print "foo\n" }
}

role Barable {
method bar { print "bar\n" }
}

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重写了它。这段代码有效(但比sin丑陋):
#!/usr/bin/perl

package Fooable;
use Moose::Role;
sub foo { print "foo\n" }

package Barable;
use Moose::Role;
sub bar { print "bar\n" }

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 "foo\n" }
}

role Barable {
method bar { print "bar\n" }
}

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;

关于perl - 我如何声明一个类在MooseX::Declare中使用多个角色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1151194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com