<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <title>%w(Akita On Rails) * 2.0 - Anatomia de Ruby Blocks/Closures Comments</title>
  <id>tag:www.akitaonrails.com,2008:/2007/11/30/anatomia-de-ruby-blocks-closures/comments</id>
  <generator version="0.8.0" uri="http://mephistoblog.com">Mephisto Drax</generator>
  <link href="http://www.akitaonrails.com/2007/11/30/anatomia-de-ruby-blocks-closures/comments.xml" rel="self" type="application/atom+xml"/>
  <link href="/2007/11/30/anatomia-de-ruby-blocks-closures" rel="alternate" type="text/html"/>
  <updated>2007-11-30T19:06:27Z</updated>
  <entry xml:base="http://www.akitaonrails.com/">
    <author>
      <name>daniel</name>
    </author>
    <id>tag:www.akitaonrails.com,2007-11-30:1483:1497</id>
    <published>2007-11-30T19:06:27Z</published>
    <updated>2007-11-30T19:06:27Z</updated>
    <category term="Dicas e Tutoriais"/>
    <link href="http://www.akitaonrails.com/2007/11/30/anatomia-de-ruby-blocks-closures" rel="alternate" type="text/html"/>
    <title>Comment on 'Anatomia de Ruby Blocks/Closures' by daniel</title>
<content type="html">&lt;p&gt;Fino Akita, finalmente entendi essa doidera&#8230; Sabia que não deveria ter dormido nas aulas de lisp e smalltalk na faculdade, a primeira vista é tudo esquisito para quem vem de linguagens derivadas do C++, depois começa a esclarecer.&lt;/p&gt;


	&lt;p&gt;Vlw por mais este artigo&#8230; já até imprimi para poder usar de consulta. hehehe.&lt;/p&gt;</content>  </entry>
  <entry xml:base="http://www.akitaonrails.com/">
    <author>
      <name>AkitaOnRails</name>
    </author>
    <id>tag:www.akitaonrails.com,2007-11-30:1483:1488</id>
    <published>2007-11-30T16:02:33Z</published>
    <updated>2007-11-30T16:02:33Z</updated>
    <category term="Dicas e Tutoriais"/>
    <link href="http://www.akitaonrails.com/2007/11/30/anatomia-de-ruby-blocks-closures" rel="alternate" type="text/html"/>
    <title>Comment on 'Anatomia de Ruby Blocks/Closures' by AkitaOnRails</title>
<content type="html">&lt;p&gt;Valeu Rodrigo, sabia que no meio de tanta coisa alguma coisa eu ia esquecer :-)&lt;/p&gt;</content>  </entry>
  <entry xml:base="http://www.akitaonrails.com/">
    <author>
      <name>Rodrigo Kochenburger</name>
    </author>
    <id>tag:www.akitaonrails.com,2007-11-30:1483:1486</id>
    <published>2007-11-30T14:20:47Z</published>
    <updated>2007-11-30T14:20:47Z</updated>
    <category term="Dicas e Tutoriais"/>
    <link href="http://www.akitaonrails.com/2007/11/30/anatomia-de-ruby-blocks-closures" rel="alternate" type="text/html"/>
    <title>Comment on 'Anatomia de Ruby Blocks/Closures' by Rodrigo Kochenburger</title>
<content type="html">&lt;p&gt;Ae akita!&lt;/p&gt;


	&lt;p&gt;Tenho alguns comentários. ;)&lt;/p&gt;


	&lt;p&gt;Em Ruby, uma closure/block são funções anônimas, e um proc é um objeto. Isso é o principal motivo para que o yield seja mais rápido do que capturar o bloco usando o argumento &#38;block, já que a closure iria ter que ser &#8220;convertida&#8221; em um proc.&lt;/p&gt;


	&lt;p&gt;Outra coisa, existe sim uma maneira de ter um metodo livre do contexto de sua instancia. A classe Method possue um método chamado unbind, que retorna um UnboundMethod.&lt;/p&gt;


	&lt;p&gt;A class UnboundMethod não possui um método .call (ou outro para execução), mas possui um método .bind, que pode ser usado para &#8220;ajustar&#8221; o contexto do método para uma determinada instancia, e então posteriormente ser executado.&lt;/p&gt;


	&lt;p&gt;Ah, e mais uma coisa.
Na versão 1.8, os construtores proc e lambda são sinônimos e Proc.new é um pouco diferente.
Na versão 1.9, proc passou a ser um sinônimo para Proc.new e lambda vai manter o comportamento existente.&lt;/p&gt;


	&lt;p&gt;http://eigenclass.org/hiki.rb?Changes+in+Ruby+1.9#l46&lt;/p&gt;


	&lt;p&gt;Quando eu comecei com Ruby, lembro que Block/Closures e Symbols eram as coisas mais estranhas que eu ja tinha visto.&lt;/p&gt;


	&lt;p&gt;Muito bom os artigos sobre ambos assuntos.&lt;/p&gt;


	&lt;p&gt;Bom,
Eras isso!&lt;/p&gt;</content>  </entry>
  <entry xml:base="http://www.akitaonrails.com/">
    <author>
      <name>AkitaOnRails</name>
    </author>
    <id>tag:www.akitaonrails.com,2007-11-30:1483:1485</id>
    <published>2007-11-30T14:15:45Z</published>
    <updated>2007-11-30T14:15:45Z</updated>
    <category term="Dicas e Tutoriais"/>
    <link href="http://www.akitaonrails.com/2007/11/30/anatomia-de-ruby-blocks-closures" rel="alternate" type="text/html"/>
    <title>Comment on 'Anatomia de Ruby Blocks/Closures' by AkitaOnRails</title>
<content type="html">&lt;p&gt;Afe, não vá por esse caminho :-) Esse assunto já foi discutido aqui ad nauseam, e em resumo eu particularmente prefiro não dizer &#8220;Ruby é 100% &lt;span class=&quot;caps&quot;&gt;OOP&lt;/span&gt;&#8221;, mas simplesmente &#8220;Ruby é bastante &lt;span class=&quot;caps&quot;&gt;OOP&lt;/span&gt;&#8221;. E para mim isso é suficiente.&lt;/p&gt;


	&lt;p&gt;Por isso que no começo eu coloco as &#8216;letras miúdas&#8217; ...&lt;/p&gt;


	&lt;p&gt;Matz criou Ruby para agradar a ele mesmo. &lt;span class=&quot;caps&quot;&gt;DHH&lt;/span&gt; criou Rails para agradar a si próprio. Quem dividir das mesmas opiniões irá gostar de Ruby e Rails, mas do contrário sempre haverá essa discussão e no fim da linha o que vemos é que isso é irrelevante.&lt;/p&gt;


	&lt;p&gt;Se Ruby fosse 100% &lt;span class=&quot;caps&quot;&gt;OOP&lt;/span&gt; ele seria Smalltalk. Ruby é o que é, e gostamos dela por ser assim mesmo. Espero que ela não mude muito no futuro.&lt;/p&gt;</content>  </entry>
  <entry xml:base="http://www.akitaonrails.com/">
    <author>
      <name>Stan</name>
    </author>
    <id>tag:www.akitaonrails.com,2007-11-30:1483:1484</id>
    <published>2007-11-30T13:52:13Z</published>
    <updated>2007-11-30T13:52:13Z</updated>
    <category term="Dicas e Tutoriais"/>
    <link href="http://www.akitaonrails.com/2007/11/30/anatomia-de-ruby-blocks-closures" rel="alternate" type="text/html"/>
    <title>Comment on 'Anatomia de Ruby Blocks/Closures' by Stan</title>
<content type="html">&lt;p&gt;Olá. Parabens pelo blog! Muito bom&#8230; Estou sempre acompanhando (embora este seja meu primeiro comentário).
Não manjo muito de ruby (ainda) e pode parecer besta, mas discordo quando você diz que Ruby é 100% OO. Além de blocos, existem uma infinidade de outras coisas em Ruby que não são OO. São coisas que as vezes podem até facilitar o desenvolvimento, mas que &#8220;quebra&#8221; a ideia de que Ruby é 100% OO!&lt;/p&gt;


	&lt;p&gt;Exemplos simples&#8230; IF, &lt;span class=&quot;caps&quot;&gt;ELSE&lt;/span&gt;, FOR, &lt;span class=&quot;caps&quot;&gt;WHILE&lt;/span&gt;&#8230; são comandos que executão ações, mas não são mensagens&#8230;
Em smalltalk por exemplo, esses comandos não existem, sendo substituidos por métodos.&lt;/p&gt;


	&lt;p&gt;Em ruby:&lt;/p&gt;


	&lt;p&gt;if a  10
    print &quot;lalala&quot; 
end&lt;/p&gt;


	&lt;p&gt;Isso é totalmente procedural. Não tem nenhuma mensagem ai. Já em smalltalk, o mesmo codigo seria:&lt;/p&gt;


	&lt;p&gt;(a  10) ifTrue: [ &#8216;lalala&#8217; out. ].&lt;/p&gt;


	&lt;p&gt;Entendo que o autor fez isso para &#8220;facilitar&#8221; o aprendizado, mas como disse, não da pra dizer que isso é 100% OO (na minha opinião).&lt;/p&gt;


	&lt;p&gt;[]´s!&lt;/p&gt;</content>  </entry>
</feed>
