Fooable ve Barable rollerinin her ikisi de tanımlanmış olduğu için, FooBar'ın Fooable ve Barable sınıfını nasıl söylerim? BenBir sınıfın MooseX :: Declare ile birden fazla rol kullandığını nasıl bildiririm?
#!/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;
diyerek sorunum yok Ama çalıştığınızda
class FooBar with Fooable, Barable {}
alıyorum eklemek az
hata kullanışlı dahaexpected option name at [path to MooseX/Declare/Syntax/NamespaceHandling.pm] line 45
Sadece ben deli değilim kendime kanıtlamak için, Moose'u kullanarak yeniden yazdım. Bu kod çalışır (ama günah daha çirkin bir):
class FooBar with Fooable with Barable {}
En yaygın görünüyor: Sadece bu da çalışır unutmayın
#!/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;
Evet, belgelere "@ (@roles) ile" diyor. Tek sorum, bir listedeki barworld hakkında olurdu. –
Hangi dokümanları kullanıyorsunuz? MooseX :: Declare docs, "Foo with class foo" (...}) diyor. Moose doktorları “(@roles) ile” derler, ama sonra bütün örnekler “Kırılabilir” ile; –