perl module moose

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.