[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