Tengo un atributo de clase en una clase Moose, pero me gustaría que funcione como Class::Data::Inheritable en términos de una subclase que anula el valor principal. Es decir, la subclase hereda el valor del elemento principal hasta que se invoca al programador en la subclase, en cuyo punto los valores se vuelven distintos. p.ej.Atributo de clase Moose que actúa como Clase :: Datos :: Incrustable
#!/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";
Cuál es la mejor manera de conseguir este efecto, la MooseX::ClassAttribute o de otra manera? Parece un comportamiento deseable para cualquier clase con datos de clases de los que se espera heredar.
Clase FWIW :: Datos :: Inheritable no está en conflicto con Moose. – Schwern
Schwern: Eso puede ser cierto, aunque los objetos Moose tienen que heredar de Moose :: Object por lo que al menos habría múltiples herencias involucradas, lo que me molesta. Además, no obtienes ninguna de las bondades de declaración de atributos de Moose que MooseX :: ClassAttribute te brinda. –