<div class="gmail_quote">2010/10/21 Nilson Santos Figueiredo Jr. <span dir="ltr"><<a href="mailto:acid06@gmail.com">acid06@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
2010/10/21 <a href="mailto:russoz@gmail.com">russoz@gmail.com</a> <<a href="mailto:russoz@gmail.com">russoz@gmail.com</a>>:<br>
<div class="im">> Similarmente, a inicialização das tabelas de lookup/dispatch (qualquer<br>
> flavour) NÃO fazem parte do bloco de código.<br>
> Ou, falando de outra forma: sim, você está certo, faz diferença em diversos<br>
> casos. But then again, se você escolhe um caso mal-codificado com dispatch e<br>
> compara com um bem-codificado com given/when, não é exatamente algo muito<br>
> justo, é? :-)<br>
<br>
</div>Não é questão de mal ou bem codificado, é uma questão de necessidade.<br>
<br>
Sempre que você precise, por algum motivo, executar algum de N casos<br>
de código em que o código em si depende do escopo atual, você não<br>
poderia declarar a dispatch table de fora. Por exemplo, você está<br>
escrevendo uma função que retorna funções que usa variáveis do escopo<br>
local no closure.<br></blockquote><div><br></div><div>Eu acho difícil que haja alguma situação na qual não seja possível usar dispatch table. </div><div><br></div><div>O seu exemplo abaixo pode ser convertido sem grandes problemas. Além disso, alguns pontos:</div>
<div><br></div><div>* Com closures, no entanto, a legibilidade não é grandes coisas em qualquer um dos casos (IMHO)</div><div>* Não creio que haja uma diferença grande de performance em ambos os casos</div><div>* Esse código que você gerou de exemplo é tipicamente algo que vai ser chamado uma vez (ou poucas, pelo menos), e a parte mais CPU-intensiva será feita depois com a gerção das saídas das tags, já diretamente nas closures (i.e., sem passar novamente pela lógica condicional). Logo, performance aqui terá menos importância ainda.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
Exemplo esdrúxulo mas que talvez ilustre o tipo de caso de uso que<br>
estou falando:<br>
<br>
<code><br>
<br>
sub tag_generator {<br>
my ($tag_name, $style) = @_;<br>
given ($style) {<br>
when ('html') {<br>
return sub {<br>
my $content = shift // '';<br>
"<$tag_name>$content</$tag_name>"<br>
}<br>
}<br>
when ('xml') {<br>
return sub {<br>
my $content = shift // '';<br>
"<$tag_name" . ( length $content ?<br>
">$content</$tag_name>" : "/>" )<br>
}<br>
}<br>
}<br>
}<br>
<br>
my $tag_html = tag_generator('tag', 'html');<br>
my $tag_xml = tag_generator('tag', 'xml');<br>
<br>
print $tag_html->("");<br>
print $tag_xml->("");<br>
<br>
</code><br>
<div><div></div><div class="h5"><br>
-Nilson<br>
_______________________________________________<br>
SaoPaulo-pm mailing list<br>
<a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Alexei Znamensky [russoz_gmail_com] [<a href="http://russoz.wordpress.com" target="_blank">russoz.wordpress.com</a>] [<a href="http://www.flickr.com/photos/alexeiz" target="_blank">www.flickr.com/photos/alexeiz</a>]<br>
<span style="font-family:arial, sans-serif;font-size:12.5px;border-collapse:collapse"><div>«Only love / <span style="font-size:12.5px">Can bring the rain / </span><span style="font-size:12.5px">That makes you yearn to the sky»</span></div>
</span><br>