[Rio-pm] [Passatempo] Interpretador para BrainFuck

Nicole Scherer bionica2007-perl em yahoo.com
Quinta Dezembro 13 04:14:20 PST 2012


Caros,

se entendi bem, o given e o when, assim como o case, são mais das formas alternativas ("há muitas maneiras de se fazer a mesma coisa em Perl") de se fazer "if-elsif-else" com linguagem mais coloquial. Certo?


Seria o mesmo que:


my $var = 'Carneirao';
if ($var eq 'Carneirao'){say "Opa, sou eu!";}elsif ($var =~ /Sbrebows/){ say 'WTF???';}
else {say "Nao sei o que quer dizer...";}


Com a vantagem de economizar o  ($var eq/=~ ...).

Correto?
Ou estou perdendo alguma coisa muito especial, que não percebi ainda?


[]'s
Nicole




________________________________
 De: Andre Carneiro <andregarciacarneiro em gmail.com>
Para: Perl Mongers Rio de Janeiro <rio-pm em pm.org> 
Enviadas: Quinta-feira, 13 de Dezembro de 2012 9:36
Assunto: Re: [Rio-pm] [Passatempo] Interpretador para BrainFuck
 

Meio estranho você não entender when e entender given, mas vamos lá! Normalmente eu mandaria um RTFM, mas já estou velho e manso ultimamente...


given é equivalente a 'switch'

when é equivalente a 'case'

Então, se você estiver usando Perl 5.10 ainda,

<code>
use feature qw/switch say/; #Isso sim, é escroto pra caramba! Se a função chama-se 'given', pra que mudar o nome para switch??? 
use strict;
use warnings;
#Ou dane-se tudo isso e faça 'use common::sense';


my $var = 'Carneirao';

given($var){
   when( 'Carneirao'){
       say "Opa, sou eu!";
   }
   when(/Sbrebows/){
      say 'WTF???';
   }
   default {
      say "Nao sei o que quer dizer...";
   }
}

#Antigamente fazíamos assim:

use Switch;


switch($var){
     case 'Carneirao' { say "Opa, sou eu!";}
     case /Sbrebows/ {say "WTF";}
     else { say "Nao sei o que quer dizer";}
}


#Mas, do Perl 5.10 em diante, o módulo Switch está com status  'deprecated', então use a primeira opção!

</code>



Agora sim! Para mais informações RTFM my friend!!!


http://perldoc.perl.org/Switch.html

http://perldoc.perl.org/perlsyn.html#Switch-Statements


:-)
Cheers!





2012/12/13 breno <breno em rio.pm.org>

2012/12/12 Aureliano Guedes <guedes_1000 em hotmail.com>:
>
>> Ainda não tinha me aventurado nas novidades do Perl 5.16.
>>
>> o when eu entendi, mas o given não, alguem poderia me explicar o uso do
>> given??
>>
>> O break ja funciona no 5.16?? se sim, como???
>>
>
>given/when existe no Perl desde a versão 5.10, com direito a default,
>continue e break =)
>
>Pra saber como, dá uma olhada aqui ó:
>
>http://perldoc.perl.org/perlsyn.html#Switch-Statements
>
>tem tudo explicadinho, inclusive o fato de que given() é experimental
>- a forma recomendada de definir o tópico é com for().
>
>Boa diversão!
>
>[]s
>
>-b
>
>_______________________________________________
>Rio-pm mailing list
>Rio-pm em pm.org
>http://mail.pm.org/mailman/listinfo/rio-pm
>


-- 
André Garcia Carneiro
Software Engineer
(11)982907780

_______________________________________________
Rio-pm mailing list
Rio-pm em pm.org
http://mail.pm.org/mailman/listinfo/rio-pm
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20121213/54f28a25/attachment.html>


Mais detalhes sobre a lista de discussão Rio-pm