[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