[SP-pm] Comportamento do do-while

Eden Cardim edencardim at gmail.com
Mon Jul 4 10:56:42 PDT 2011


>>>>> "Lucas" == Lucas Buchala <lucasbuchala em gmail.com> writes:

    Lucas> Eu sempre achei que onde eu tivesse uma única instrução, eu poderia
    Lucas> substituir a instrução por um bloco "do { ... }" e a lógica ficaria
    Lucas> sempre a mesma.

    Lucas> Mas agora vi esse exemplo do comportamento bizarro do do-while:

    Lucas> -----------------------------------------------------
    Lucas> $ perl -E 'say "hello" while 0'
    Lucas> (Não imprime nada)

    Lucas> $ perl -E 'do { say "hello" } while 0'
    Lucas> hello
    Lucas> -----------------------------------------------------

    Lucas> Com uma única instrução, o while (falso) NÃO executa nenhuma vez, o
    Lucas> que já era esperado.
    Lucas> Mas com um bloco "do", o while (falso) executa uma vez.
    Lucas> Qual o "rationale" aqui? Apenas para igualar o comportamento do
    Lucas> do-while da linguagem C, de executar pelo menos uma vez? Na minha
    Lucas> opinião, esse design ficou meio inconsistente... :-(

Veja a documentação:

,----[ perldoc -f do ]
|     do BLOCK
|             Not really a function. Returns the value of the last command in
|             the sequence of commands indicated by BLOCK. When modified by
|             the "while" or "until" loop modifier, executes the BLOCK once
|             before testing the loop condition. (On other statements the loop
|             modifiers test the conditional first.)
`----

-- 
   Eden Cardim       Need help with your Catalyst or DBIx::Class project?
  Code Monkey                    http://www.shadowcat.co.uk/catalyst/
 Shadowcat Systems Ltd.  Want a managed development or deployment platform?
http://blog.edencardim.com/            http://www.shadowcat.co.uk/servers/
http://twitter.com/#!/edenc


More information about the SaoPaulo-pm mailing list