[SP-pm] Referências
Luis Motta Campos
luismottacampos at yahoo.co.uk
Tue Nov 18 02:18:49 PST 2008
Daniel de Oliveira Mantovani wrote:
> Alguém pode me explicar o que são Protótipos de funções/métodos ?
Ah! Agora sim, uma pergunta pública. Esta eu respondo.
Protótipos de função é uma técnica de verificação de tipo de dados. Eles
servem para ajudar o compilador a verificar erros de tipos de dados
durante a compilação de programas.
http://pt.wikipedia.org/wiki/Prot%C3%B3tipo_de_fun%C3%A7%C3%A3o
Em Perl, protótipos de função não funcionam assim: a linguagem não tem
tipos de dados, e assim não tem como ter erros de tipo de dados.
Protótipos de função em Perl são uma transformação que se pode aplicar
nos dados antes que eles sejam passados para a função que você está
chamando. É muito útil para ajudar o programador a escrever menos e
fazer programas mais legíveis e intuitivos. Por exemplo, para
transformar um array em uma referência de array, você pode usar o
protótipo "\@" (entre parentesis, na definição da função):
sub example ( \@\@ ) {
my ( $arrayref_a, $arrayref_b ) = ( @_ );
# ...
}
E você pode chamar a função assim:
my @a = 'a'..'Z'; # todas as letras
my @b = 0..9; # todos os digitos
example @a, @b; # não mistura @a e @b
A vantagem de usar protótipos de função em Perl é muito mais de "açúcar
sintático" que qualquer outra. Podemos fazer mágicas muito
interessantes, mas elas podem eventualmente dificultar a manutenção e
causar erros não muito simples de se enxergar.
Eu pessoalmente não aconselho ninguém a usar protótipos de função, mas,
se você está usando uma biblioteca que faz uso deles, chamar a função
com "&" no começo vai fazer a tua vida mais complicada, já que você está
desrespeitando a interface da biblioteca que você está usando (que
assume que você está usando o protótipo de função).
Esperoq que isso ajude a compreender o que são protótipos de função nas
outras linguagens de programação e em Perl.
Putamplexos.
--
Luis Motta Campos is a software engineer,
Perl Programmer, foodie and photographer.
More information about the SaoPaulo-pm
mailing list