[SP-pm] Entendendo Protótipos
Daniel de Oliveira Mantovani
daniel.oliveira.mantovani at gmail.com
Mon Dec 22 16:54:32 PST 2008
Obrigado Breno pela amplitude. Ficou mais claro agora.
Você usa protótipo no seu dia-a-dia? e se usa o que você faz?
[]s
2008/12/22 breno <breno em rio.pm.org>
> 2008/12/22 Daniel de Oliveira Mantovani <
> daniel.oliveira.mantovani em gmail.com>:
> > my $stat = período();
> > Bom(a) $stat pessoal.
> >
> > Estou estudando Protótipos, e tenho algumas dúvidas vou tentar explicar.
> >
> > Por exemplo push(@array,$item);
> >
> > No protótipo é a mesma coisa que isso ?
> >
> > syb mypush (@array, $item);
> >
> > Ele faz a mesma coisa que push só que joga na sub rotina e o valor fica
> > armazenado em @_ ?
> >
>
> Daniel,
>
> protótipos são uma espécie de verificação de argumentos em tempo de
> compilação, e permitem que vc chame subrotinas sem os parêntesis sem
> gerar ambiguidade, como as funções built-in do Perl ("push", por
> exemplo). A declaração de protótipos não envolve o nome da variável
> onde vc pretende colocá-la, apenas o símbolo do tipo de variável ($,
> @, %, &) que espera receber como parâmetros.
>
> O "perldoc perlsub" fala muito bem sobre isso e vale a leitura. Alguns
> exemplos de lá:
>
> Declarado como: Chamado como:
>
> sub mylink ($$) mylink $old, $new
> sub myvec ($$$) myvec $var, $offset, 1
> sub myindex ($$;$) myindex &getstring, "substr"
> sub mysyswrite ($$$;$) mysyswrite $buf, 0, length($buf) - $off, $off
> sub myreverse (@) myreverse $a, $b, $c
> sub myjoin ($@) myjoin ":", $a, $b, $c
> sub mypop (\@) mypop @array
> sub mysplice (\@$$@) mysplice @array, @array, 0, @pushme
> sub mykeys (\%) mykeys %{$hashref}
> sub myopen (*;$) myopen HANDLE, $name
> sub mypipe (**) mypipe READHANDLE, WRITEHANDLE
> sub mygrep (&@) mygrep { /foo/ } $a, $b, $c
> sub myrand ($) myrand 42
> sub mytime () mytime
>
>
> Para pegar "automagicamente" os valores da sua subrotina vc não quer
> protótipos, e sim algo como o Method::Signatures
> (http://search.cpan.org/perldoc?Method::Signatures)
>
>
> []s
>
> -b
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>
--
http://mantovanihouse.blogspot.com/
-------(\_------------_/)-----------
-------)--(----------)--(-----------
------(----(---------)----)----------
-------)----(-------)----(-----------
-------(----(-------)----)-----------
--------\_-(\\.---.//)-_/------------
----------\)' -8--8- '(/--------------
-----------/------------\---------------
----------(--)--------(--)--------------
------------(_c__c_)----------------
----------------------------------------
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20081222/d729c5b8/attachment.html>
More information about the SaoPaulo-pm
mailing list