<div class="gmail_quote">2010/10/21 Nilson Santos Figueiredo Jr. <span dir="ltr">&lt;<a href="mailto:acid06@gmail.com">acid06@gmail.com</a>&gt;</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> &lt;<a href="mailto:russoz@gmail.com">russoz@gmail.com</a>&gt;:<br>
<div class="im">&gt; Similarmente, a inicialização das tabelas de lookup/dispatch (qualquer<br>
&gt; flavour) NÃO fazem parte do bloco de código.<br>
&gt; Ou, falando de outra forma: sim, você está certo, faz diferença em diversos<br>
&gt; casos. But then again, se você escolhe um caso mal-codificado com dispatch e<br>
&gt; compara com um bem-codificado com given/when, não é exatamente algo muito<br>
&gt; 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>
&lt;code&gt;<br>
<br>
sub tag_generator {<br>
    my ($tag_name, $style) = @_;<br>
    given ($style) {<br>
        when (&#39;html&#39;) {<br>
            return sub {<br>
                my $content = shift // &#39;&#39;;<br>
                &quot;&lt;$tag_name&gt;$content&lt;/$tag_name&gt;&quot;<br>
            }<br>
        }<br>
        when (&#39;xml&#39;)  {<br>
            return sub {<br>
                my $content = shift // &#39;&#39;;<br>
                &quot;&lt;$tag_name&quot; . ( length $content ?<br>
&quot;&gt;$content&lt;/$tag_name&gt;&quot; : &quot;/&gt;&quot; )<br>
            }<br>
        }<br>
    }<br>
}<br>
<br>
my $tag_html = tag_generator(&#39;tag&#39;, &#39;html&#39;);<br>
my $tag_xml  = tag_generator(&#39;tag&#39;, &#39;xml&#39;);<br>
<br>
print $tag_html-&gt;(&quot;&quot;);<br>
print $tag_xml-&gt;(&quot;&quot;);<br>
<br>
&lt;/code&gt;<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>