<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Usando ExpandoMetaClass</title>
	<atom:link href="http://www.danilat.com/weblog/2008/04/17/usando-expandometaclass/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.danilat.com/weblog/2008/04/17/usando-expandometaclass/</link>
	<description>Daniel Latorre - Desarrollador y algunas cosas más</description>
	<lastBuildDate>Tue, 07 Sep 2010 10:16:52 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>By: Dani</title>
		<link>http://www.danilat.com/weblog/2008/04/17/usando-expandometaclass/comment-page-1/#comment-7704</link>
		<dc:creator>Dani</dc:creator>
		<pubDate>Mon, 17 Nov 2008 00:03:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.danilat.com/weblog/2008/04/17/usando-expandometaclass/#comment-7704</guid>
		<description>Uh! Metedura de pata, se me pasó que era final :P. Gracias Alberto.

La verdad que, estas &quot;pequeñas&quot; cosas que dan algunos lenguajes dinámicos, están muy bien tanto para este caso que es una clase final como para parchear alguna cosita de las librerías que usemos sin tener que tocar su código original :)</description>
		<content:encoded><![CDATA[<p>Uh! Metedura de pata, se me pasó que era final <img src='http://www.danilat.com/weblog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> . Gracias Alberto.</p>
<p>La verdad que, estas &#8220;pequeñas&#8221; cosas que dan algunos lenguajes dinámicos, están muy bien tanto para este caso que es una clase final como para parchear alguna cosita de las librerías que usemos sin tener que tocar su código original <img src='http://www.danilat.com/weblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Alberto Vilches</title>
		<link>http://www.danilat.com/weblog/2008/04/17/usando-expandometaclass/comment-page-1/#comment-7702</link>
		<dc:creator>Alberto Vilches</dc:creator>
		<pubDate>Sun, 16 Nov 2008 23:30:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.danilat.com/weblog/2008/04/17/usando-expandometaclass/#comment-7702</guid>
		<description>StringBuilder, al igual que la mayoría de clases del JDK, son finales por lo que no se pueden extender, así que el uso de ExpandoMetaClass es realmente indispensable para hacer esta pequeñas grandes cosas que solo Groovy puede hacer :)</description>
		<content:encoded><![CDATA[<p>StringBuilder, al igual que la mayoría de clases del JDK, son finales por lo que no se pueden extender, así que el uso de ExpandoMetaClass es realmente indispensable para hacer esta pequeñas grandes cosas que solo Groovy puede hacer <img src='http://www.danilat.com/weblog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dani</title>
		<link>http://www.danilat.com/weblog/2008/04/17/usando-expandometaclass/comment-page-1/#comment-3425</link>
		<dc:creator>Dani</dc:creator>
		<pubDate>Fri, 25 Apr 2008 13:04:27 +0000</pubDate>
		<guid isPermaLink="false">http://www.danilat.com/weblog/2008/04/17/usando-expandometaclass/#comment-3425</guid>
		<description>Hola Julio,

Ya tenía en cuenta eso, probablemente mi problema venía de estar ejecutando groovy desde eclipse y no lo probé en consola.

Era curioso ver que con StringBuilder.metaClass.append(...) no hacía nada y con StringBuilder.metaClass.append&lt;&lt;... saltaba la excepción que mencionas.</description>
		<content:encoded><![CDATA[<p>Hola Julio,</p>
<p>Ya tenía en cuenta eso, probablemente mi problema venía de estar ejecutando groovy desde eclipse y no lo probé en consola.</p>
<p>Era curioso ver que con StringBuilder.metaClass.append(&#8230;) no hacía nada y con StringBuilder.metaClass.append<<&#8230; saltaba la excepción que mencionas.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Julio</title>
		<link>http://www.danilat.com/weblog/2008/04/17/usando-expandometaclass/comment-page-1/#comment-3412</link>
		<dc:creator>Julio</dc:creator>
		<pubDate>Fri, 25 Apr 2008 04:57:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.danilat.com/weblog/2008/04/17/usando-expandometaclass/#comment-3412</guid>
		<description>Si utilizas &#039;&lt;&lt;&#039; para agregar el método, se lanza una excepción de que el método ya existe.

Si lo haces como en el ejemplo de arriba, es decir:

String.metaClass.toLowerCase = { -&gt; &quot;prohibido minúsculas&quot;}

cuando ejecutes &quot;HOLA&quot;.toLowerCase() verás que se ha reemplazado el método y ya no podrás convertir a minúsculas XD.

Pero también recuerda que un método se diferencia de otro por firma (nombre del método, número, tipo y orden de sus parámetros), así que puedes agregar muchas versiones de toLowerCase pero variando los parámetros.

Pueden revisar éste enlace donde se explica ésto: &lt;a href=&#039;http://groovy.codehaus.org/ExpandoMetaClass+-+Methods&#039; rel=&quot;nofollow&quot;&gt;http://groovy.codehaus.org/ExpandoMetaClass+-+Methods&lt;/a&gt;</description>
		<content:encoded><![CDATA[<p>Si utilizas &#8216;&lt;&lt;&#8217; para agregar el método, se lanza una excepción de que el método ya existe.</p>
<p>Si lo haces como en el ejemplo de arriba, es decir:</p>
<p>String.metaClass.toLowerCase = { -&gt; &#8220;prohibido minúsculas&#8221;}</p>
<p>cuando ejecutes &#8220;HOLA&#8221;.toLowerCase() verás que se ha reemplazado el método y ya no podrás convertir a minúsculas XD.</p>
<p>Pero también recuerda que un método se diferencia de otro por firma (nombre del método, número, tipo y orden de sus parámetros), así que puedes agregar muchas versiones de toLowerCase pero variando los parámetros.</p>
<p>Pueden revisar éste enlace donde se explica ésto: <a href='http://groovy.codehaus.org/ExpandoMetaClass+-+Methods' rel="nofollow">http://groovy.codehaus.org/ExpandoMetaClass+-+Methods</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dani</title>
		<link>http://www.danilat.com/weblog/2008/04/17/usando-expandometaclass/comment-page-1/#comment-3268</link>
		<dc:creator>Dani</dc:creator>
		<pubDate>Fri, 18 Apr 2008 16:46:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.danilat.com/weblog/2008/04/17/usando-expandometaclass/#comment-3268</guid>
		<description>Hola Blaxter,

En teoría se pueden sobreescribir métodos, pero he hecho un par de pruebas y no lo he conseguido(soy algo torpe:P), por esto no puedo asegurarte nada sobre si puede modificarse un método manteniendo el comportamiento anterior, tampoco he visto documentación acerca de mantener el comportamiento existente... a ver si con más tiempo trato de ver si es posible.

Por cierto, el método append ya devuelve la instancia del mismo objeto, se podría hacer stringBuilder.append(&quot;bla&quot;).append(&quot;bla&quot;)</description>
		<content:encoded><![CDATA[<p>Hola Blaxter,</p>
<p>En teoría se pueden sobreescribir métodos, pero he hecho un par de pruebas y no lo he conseguido(soy algo torpe:P), por esto no puedo asegurarte nada sobre si puede modificarse un método manteniendo el comportamiento anterior, tampoco he visto documentación acerca de mantener el comportamiento existente&#8230; a ver si con más tiempo trato de ver si es posible.</p>
<p>Por cierto, el método append ya devuelve la instancia del mismo objeto, se podría hacer stringBuilder.append(&#8220;bla&#8221;).append(&#8220;bla&#8221;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Blaxter</title>
		<link>http://www.danilat.com/weblog/2008/04/17/usando-expandometaclass/comment-page-1/#comment-3238</link>
		<dc:creator>Blaxter</dc:creator>
		<pubDate>Thu, 17 Apr 2008 13:03:40 +0000</pubDate>
		<guid isPermaLink="false">http://www.danilat.com/weblog/2008/04/17/usando-expandometaclass/#comment-3238</guid>
		<description>¿Se puede en groovy sobreescribir el propio método append guardando su funcionalidad? Vamos lo que se denomina normalmente un method chaining.</description>
		<content:encoded><![CDATA[<p>¿Se puede en groovy sobreescribir el propio método append guardando su funcionalidad? Vamos lo que se denomina normalmente un method chaining.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
