Hoje vou falar sobre um tópico bastante simples que surgiu em uma apresentação de Perl que fiz na Computer Science House @ RIT.
Constantes
Constantes são um recurso muito antigo no Perl e também um recurso muito útil. O constant
pragma embutido em Perl permite que você crie constantes em tempo de compilação. É usado assim
use constant NAME => 'William Orr';
Isso cria uma constante chamada NAME
, que pode ser usada assim:
say NAME;
O que diabos é uma constante?
Constantes, como você pode notar, não têm nenhum tipo de sigilo precedente. Isso ocorre porque, na verdade, as constantes são implementadas como funções que retornam o valor pré-declarado.
Isso explica algumas coisas, como constantes só podem ser escalares ou listas, não arrays ou hashes.
Também é importante notar que o pragma constante impõe um contexto de lista em seus argumentos. Algo como
use constant CURRENT_TIME => localtime();
provavelmente não fará o que você deseja (ou seja, fornecerá uma string da hora atual).
Além disso, se você tentar usar a constante acima, poderá encontrar erros ao tentar indexá-la.
say CURRENT_TIME[0] #this doesn't do what you want
say (CURRENT_TIME)[0] # this, however, does
Isso ocorre porque CURRENT_TIME
é uma lista, não uma matriz.
Mas Will, eu quero interpolação!
Legal, eu também. Vamos falar sobre interpolação.
use Const::Fast;
const my $NAME => 'William Orr';
say "My name is $NAME";
Const::Fast
é um módulo fantástico que dá a você a habilidade de criar constantes rapidamente sem os problemas que use constant
o stdlib Readonly
apresenta.
Resumo
Constantes são úteis e Const::Fast
são a melhor e mais fácil maneira de fazer e usar constantes. Caso contrário, o constant
pragma embutido funciona brilhantemente.