У меня есть атрибут класса в классе Moose, но я бы хотел, чтобы он работал как Class :: Data :: Inheritable в терминах подкласса, переопределяющего значение родителя. Таким образом, подкласс наследует значение родительского элемента до тех пор, пока в подклассе не будет вызван метод установки, после чего значения станут различаться. например,
#!/usr/bin/perl
use warnings;
use strict;
{
package Foo;
use Moose;
use MooseX::ClassAttribute;
class_has Item => ( is => 'rw' );
}
{
package Bar;
use Moose;
extends 'Foo';
}
Foo->Item(4);
# This prints "4, 4" as expected
#
print join( ", ", Foo->Item(), Bar->Item() ) . "\n";
Bar->Item(5);
# Would like this to print "4, 5", but it prints "5, 5"
#
print join( ", ", Foo->Item(), Bar->Item() ) . "\n";
Какой лучший способ получить этот эффект, с MooseX :: ClassAttribute или иным способом? Похоже на желаемое поведение для любого класса с данными класса, которые ожидаются от наследования.