perl - ¿Puedo definir funciones fuera de una clase usando MooseX:: Declare?
module (2)
Recientemente comencé a usar el módulo MooseX :: Declare . Me encanta por su sintaxis. Es elegante y ordenado. ¿Alguien ha encontrado casos en los que le gustaría escribir muchas funciones (algunas de ellas grandes) dentro de una clase y la definición de la clase en páginas? ¿Hay alguna solución para hacer que la definición de clase simplemente tenga las funciones declaradas y la definición de la función real fuera de la clase?
Lo que busco es algo como esto:
class BankAccount {
has ''balance'' => ( isa => ''Num'', is => ''rw'', default => 0 );
# Functions Declaration.
method deposit(Num $amount);
method withdraw(Num $amount);
}
# Function Definition.
method BankAccount::deposit (Num $amount) {
$self->balance( $self->balance + $amount );
}
method BankAccount::withdraw (Num $amount) {
my $current_balance = $self->balance();
( $current_balance >= $amount )
|| confess "Account overdrawn";
$self->balance( $current_balance - $amount );
}
Veo que hay una manera de hacer que la clase sea mutable. Alguien sabe como hacerlo?
Fácil (pero necesita agregar al documento).
class BankAccount is mutable {
}
Como un aparte, ¿por qué estás definiendo tus métodos fuera de la clase?
Puedes simplemente ir
class BankAccount is mutable {
method foo (Int $bar) {
# do stuff
}
}
Quiero que la definición de mi clase sea breve, y dar una idea abstracta de para qué es la clase. Me gusta cómo se hizo en C ++, donde tiene la opción de definir funciones en línea o fuera de la clase utilizando el operador de resolución de alcance. Esto hace que la definición de clase sea breve y ordenada. Esto es lo que estoy buscando.
Gracias por tu tiempo.