[SP-pm] Comportamento do do-while

Renato Santos renato.cron at gmail.com
Mon Jul 4 07:36:29 PDT 2011


do {} vai criar um bloco

mais precisamente, fazer, depois testar o resultado.
do {} while no perl é feito para fazer igual Repeat ~  Until do delphi.

Como while não é uma condicional, o comando esta certo!

Eu chamo isso de "bate depois pergunta"
Pois se fosse
while ( 0 ) { do { ... } }  primeiro ia perguntar depois bater!


2011/7/4 Lucas Buchala <lucasbuchala at gmail.com>

> Eu sempre achei que onde eu tivesse uma única instrução, eu poderia
> substituir a instrução por um bloco "do { ... }" e a lógica ficaria
> sempre a mesma.
>
> Mas agora vi esse exemplo do comportamento bizarro do do-while:
>
> -----------------------------------------------------
> $ perl -E 'say "hello" while 0'
> (Não imprime nada)
>
> $ perl -E 'do { say "hello" } while 0'
> hello
> -----------------------------------------------------
>
> Com uma única instrução, o while (falso) NÃO executa nenhuma vez, o
> que já era esperado.
> Mas com um bloco "do", o while (falso) executa uma vez.
> Qual o "rationale" aqui? Apenas para igualar o comportamento do
> do-while da linguagem C, de executar pelo menos uma vez? Na minha
> opinião, esse design ficou meio inconsistente... :-(
> =begin disclaimer
>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>



-- 
Renato Santos
http://www.renatocron.com/blog/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20110704/85d02869/attachment.html>


More information about the SaoPaulo-pm mailing list