¡Hola, gente!
Bueno, lamento retomar el tema, pero tengo unas dudillas.
Estuve tratando de implementar
Class::Interface porque me parece más sencillo y no da tantas vueltas como Moose (de todas formas esto lo voy a usar más adelante).
La cuestión es que no he podido usar esa clase porque no me funciona.
Puntualmente me da este error: "
tries to implement non existing interface".
Estuve viendo el código y usando tan cual muestran los ejemplos, y nada. Probé varias formas de llamadas (intercambiando las llamadas de lugar solamente) y nada.
El ejemplo que usé es el mismo que trae en su PM y tampoco me funciona.
¿Les ha pasado esto alguna vez a ustedes? Si es así y pudieran darme una mano, se los agradecería.
La prueba que hice fue:
Using perl Syntax Highlighting
package Bouncable;
use Class::Interface;
&interface; # this actually declares the interface
sub bounce;
sub getBounceBack;
1;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Using perl Syntax Highlighting
package Ball;
use Class::Interface;
&implements( 'Bouncable' );
sub bounce {
my $self = shift;
print "The ball is bouncing @ ".$self->getBounceBack." strength"
}
sub getBounceBack {
return 10;
}
1;
Coloreado en 0.005 segundos, usando
GeSHi 1.0.8.4
Using perl Syntax Highlighting
package AbstractInterestCalculator;
use Class::Interface;
&abstract; # this actually declares this class to be abstract;
use Class::AccessorMaker {
interest => 5.1,
maxInterestValue => 0,
}
# a hook for doing calculations
sub calculate {
my ( $self, $value ) = @_;
$self->prepare();
$value += $self->getInterestValue( $value );
return $value;
}
sub prepare; # prepare calculations
sub getInterstValue; # get the interest value
1;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Using perl Syntax Highlighting
package LowInterestCalculator;
use Class::Interface;
&extends( 'AbstractInterestCalculator' );
sub prepare {
my ( $self ) = @_;
$self->interest(1.3);
# we don't give interest if the value of the account is or
# exceeds $10.000
$self->maxInterestValue(10000)
}
sub getInterstValue {
my ( $self, $value ) = @_
if ( $self->maxInterestValue &&
$value >= $self->maxInterestValue ) {
return 0;
}
$value *= $self->interest;
return $value;
}
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Lo que pretendo en principio es que no me tire ningún error, luego me centraré en los detalles.
Cada archivo lo puse separado con el nombre de su Package con extensión
pm.
¡ Gracias !
P.D.: El error que les marqué es uno de ellos, pero si puedo saber por qué me lo tira, resolveré el otro error que es similar.