¿Perl tiene un tipo de enumeración que se adhiere a las mejores prácticas, o tal vez lo más importante, lo necesita?¿Perl tiene un tipo de enumeración?
El proyecto en el que trabajo uno usa cadenas por todos lados para indicar cosas que normalmente usarían un Enum en un lenguaje como C#. Por ejemplo, tenemos un conjunto de números de teléfono en una variedad de hashes, cada uno asociado con un tipo de teléfono ("Inicio", "trabajo", "móvil", etc.):
$phone_number->{type} = 'Home';
¿Sería suficiente para usar un conjunto de variables de solo lectura aquí o debería usarse un Enum? He encontrado un enum
module on CPAN pero parece usar palabras simples que infringe uno de los Perl Best Practices. Mi forma de pensar sobre el uso de read-only variables es algo como esto:
use Readonly;
Readonly my $HOME => 'Home';
Readonly my $WORK => 'Work';
Readonly my $MOBILE => 'Mobile';
$phone_number->{type} = $HOME;
¿Es esta una buena aproximación o hay una mejor manera?
Para mayor rigurosidad, hay un sub HOME() {'home'} creado detrás de la escena. –
Cuando tiene una subrutina que toma Phone :: Type enum como argumento, ¿cómo se realiza la comprobación dinámica en el argumento de la subrutina? Phone :: Type type enum, no string, not number ... –
Solo para aclarar sub HOME () {'home'} y use la constante { HOME => 'Home', WORK => 'Work', MOBILE => 'Mobile', }; son lo mismo? el último genera (Detrás de la escena) el código? –