ロール 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;