﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-黑灵客栈-随笔分类-Do everything with Groovy</title><link>http://www.blogjava.net/mstar/category/29976.html</link><description>搞软件开发就像被强奸,如果不能反抗,就享受它吧！</description><language>zh-cn</language><lastBuildDate>Mon, 07 Sep 2009 09:39:37 GMT</lastBuildDate><pubDate>Mon, 07 Sep 2009 09:39:37 GMT</pubDate><ttl>60</ttl><item><title>[ZZ]Groovy Goodness: Date and Time Durations and the TimeCategory</title><link>http://www.blogjava.net/mstar/archive/2009/09/07/294145.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Mon, 07 Sep 2009 02:54:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2009/09/07/294145.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/294145.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2009/09/07/294145.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/294145.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/294145.html</trackback:ping><description><![CDATA[<p>Groovy has some elegant ways to work with date and time values. One
of them is the support of durations. We can define a duration to denote
a certain time amount, like 7 days, 2 hours and 50 minutes. We can use
these durations to add or subtract them from date and time objects.</p>
<p>The <code>TimeCategory</code> provides an even Groovier way to work
with durations. We can use constructs like 7.days + 12.minutes to
create a duration. When we read this code it is just like reading
English text. Here is some sample code:</p>
<p><br />
</p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;groovy.time.</span><span style="color: #000000;">*</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;org.codehaus.groovy.runtime.TimeCategory<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Define&nbsp;period&nbsp;of&nbsp;2&nbsp;years,&nbsp;3&nbsp;months,&nbsp;15&nbsp;days,&nbsp;0&nbsp;hours,&nbsp;23&nbsp;minutes,&nbsp;2&nbsp;seconds&nbsp;and&nbsp;0&nbsp;milliseconds.</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">def&nbsp;period&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;DatumDependentDuration(</span><span style="color: #000000;">2</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">15</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">23</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)<br />
</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">2&nbsp;years,&nbsp;3&nbsp;months,&nbsp;15&nbsp;days,&nbsp;23&nbsp;minutes,&nbsp;2.000&nbsp;seconds</span><span style="color: #000000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;period.toString()<br />
def&nbsp;year2000&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Date(</span><span style="color: #000000;">100</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Jan&nbsp;1,&nbsp;2000</span><span style="color: #008000;"><br />
</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">Mon&nbsp;Apr&nbsp;15&nbsp;00:23:02&nbsp;UTC&nbsp;2002</span><span style="color: #000000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;(period&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;year2000).toString()<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Define&nbsp;time&nbsp;period&nbsp;of&nbsp;5&nbsp;hours,&nbsp;54&nbsp;minutes&nbsp;and&nbsp;30&nbsp;milliseconds.</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">def&nbsp;time&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;TimeDuration(</span><span style="color: #000000;">5</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">54</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">30</span><span style="color: #000000;">)<br />
</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">5&nbsp;hours,&nbsp;54&nbsp;minutes,&nbsp;0.030&nbsp;seconds</span><span style="color: #000000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;time.toString()<br />
<br />
use&nbsp;(TimeCategory)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;period.toString()&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">2</span><span style="color: #000000;">.years&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">.months&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">15</span><span style="color: #000000;">.days&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">.hour&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">23</span><span style="color: #000000;">.minutes&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">.seconds).toString()<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;time.toString()&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">5</span><span style="color: #000000;">.hours&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">54</span><span style="color: #000000;">.minutes&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">30</span><span style="color: #000000;">.milliseconds).toString()<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;We&nbsp;can&nbsp;use&nbsp;period.from.now&nbsp;syntax.&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;d1&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">.week&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">.day<br />
&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;d2&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Date()&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">6</span><span style="color: #000000;">.days<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;d2.format(</span><span style="color: #000000;">'</span><span style="color: #000000;">yyyy-MM-dd</span><span style="color: #000000;">'</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;d1.from.now.toString()<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;We&nbsp;can&nbsp;use&nbsp;period.ago&nbsp;syntax.</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;d3&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">.days.ago<br />
&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;d4&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Date()&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;d4.format(</span><span style="color: #000000;">'</span><span style="color: #000000;">yyyy-MM-dd</span><span style="color: #000000;">'</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;d3.toString()<br />
}<br />
</span></div>
<img src ="http://www.blogjava.net/mstar/aggbug/294145.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2009-09-07 10:54 <a href="http://www.blogjava.net/mstar/archive/2009/09/07/294145.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ZZ]Groovy Goodness: Multiple Assignments</title><link>http://www.blogjava.net/mstar/archive/2009/09/07/294144.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Mon, 07 Sep 2009 02:52:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2009/09/07/294144.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/294144.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2009/09/07/294144.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/294144.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/294144.html</trackback:ping><description><![CDATA[Since Groovy 1.6 we can define and assign values to several variables
at once. This is especially useful when a method returns multiple
values and we want to assign them to separate variables.<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Assign&nbsp;and&nbsp;declare&nbsp;variables.</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">def&nbsp;(username,&nbsp;email)&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;[</span><span style="color: #000000;">'</span><span style="color: #000000;">mrhaki</span><span style="color: #000000;">'</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">email@host.com</span><span style="color: #000000;">'</span><span style="color: #000000;">]<br />
</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">mrhaki</span><span style="color: #000000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;username<br />
</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">email@host.com</span><span style="color: #000000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;email<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;We&nbsp;can&nbsp;assign&nbsp;later&nbsp;than&nbsp;the&nbsp;definition&nbsp;of&nbsp;the&nbsp;variables.</span><span style="color: #008000;"><br />
</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;housenr<br />
String&nbsp;streetname<br />
(streetname,&nbsp;housenr)&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;[</span><span style="color: #000000;">'</span><span style="color: #000000;">Old&nbsp;Street</span><span style="color: #000000;">'</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">42</span><span style="color: #000000;">]<br />
</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">42</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;housenr<br />
</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">Old&nbsp;Street</span><span style="color: #000000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;streetname<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Return&nbsp;value&nbsp;of&nbsp;method&nbsp;can&nbsp;be&nbsp;assigned&nbsp;to&nbsp;multiple&nbsp;variables.</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">def&nbsp;iAmHere()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;[</span><span style="color: #000000;">29.20090</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">12.90391</span><span style="color: #000000;">]<br />
}<br />
def&nbsp;(coordX,&nbsp;coordY)&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;iAmHere()<br />
</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;coordX&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">29.20090</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;coordY&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">12.90391</span><span style="color: #000000;"><br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;More&nbsp;values&nbsp;than&nbsp;variables:&nbsp;extra&nbsp;values&nbsp;are&nbsp;ignored.</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">def&nbsp;(a,&nbsp;b,&nbsp;c)&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;[</span><span style="color: #000000;">'</span><span style="color: #000000;">a</span><span style="color: #000000;">'</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">b</span><span style="color: #000000;">'</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">c</span><span style="color: #000000;">'</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">d</span><span style="color: #000000;">'</span><span style="color: #000000;">]<br />
</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">a</span><span style="color: #000000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;a<br />
</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">b</span><span style="color: #000000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;b<br />
</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">c</span><span style="color: #000000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;c<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Less&nbsp;values&nbsp;than&nbsp;variables:&nbsp;variable&nbsp;is&nbsp;not&nbsp;set.</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">def&nbsp;(x,&nbsp;y,&nbsp;z)&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;[</span><span style="color: #000000;">100</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">200</span><span style="color: #000000;">]<br />
</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">100</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;x<br />
</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">200</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;y<br />
</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">!</span><span style="color: #000000;">z<br />
</span></div>
<br />
<img src ="http://www.blogjava.net/mstar/aggbug/294144.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2009-09-07 10:52 <a href="http://www.blogjava.net/mstar/archive/2009/09/07/294144.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[ZZ]Groovy Goodness: the With Method</title><link>http://www.blogjava.net/mstar/archive/2009/09/07/294143.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Mon, 07 Sep 2009 02:51:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2009/09/07/294143.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/294143.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2009/09/07/294143.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/294143.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/294143.html</trackback:ping><description><![CDATA[Groovy has a with method we can use to group method calls and property
access to an object. The with method accepts a closure and every method
call or property access in the closure applies to the object if
applicable. The method is part of <a href="http://groovy.codehaus.org/groovy-jdk/java/lang/Object.html">Groovy's extensions</a> to the <code>java.lang.Object</code> class. Let's see this with an example:<br />
<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Sample&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;username<br />
&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;email<br />
&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">String</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;labels&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;[]<br />
&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;speakUp()&nbsp;{&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">I&nbsp;am&nbsp;$username</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;def&nbsp;addLabel(value)&nbsp;{&nbsp;labels&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;value&nbsp;}<br />
}<br />
<br />
def&nbsp;sample&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Sample()<br />
sample.with&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;username&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">mrhaki</span><span style="color: #000000;">'</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;email&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">email@host.com</span><span style="color: #000000;">'</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;println&nbsp;speakUp()&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Output:&nbsp;I&nbsp;am&nbsp;mrhaki</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;addLabel&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">Groovy</span><span style="color: #000000;">'</span><span style="color: #000000;">&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;addLabel&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">Java</span><span style="color: #000000;">'</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;sample.labels.size()<br />
</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">Groovy</span><span style="color: #000000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;sample.labels[</span><span style="color: #000000;">0</span><span style="color: #000000;">]<br />
</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">Java</span><span style="color: #000000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;sample.labels[</span><span style="color: #000000;">1</span><span style="color: #000000;">]<br />
</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">mrhaki</span><span style="color: #000000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;sample.username<br />
</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">email@host.com</span><span style="color: #000000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;sample.email<br />
<br />
def&nbsp;sb&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;StringBuilder()<br />
sb.with&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;append&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">Just&nbsp;another&nbsp;way&nbsp;to&nbsp;add&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;append&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">strings&nbsp;to&nbsp;the&nbsp;StringBuilder&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;append&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">object.</span><span style="color: #000000;">'</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
}<br />
<br />
</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">Just&nbsp;another&nbsp;way&nbsp;to&nbsp;add&nbsp;strings&nbsp;to&nbsp;the&nbsp;StringBuilder&nbsp;object.</span><span style="color: #000000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;sb.toString()<br />
<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;Another&nbsp;example&nbsp;as&nbsp;seen&nbsp;at&nbsp;<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;</span><span style="color: #008000; text-decoration: underline;">http://javajeff.blogspot.com/2008/11/getting-groovy-with-with.html</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">def&nbsp;cal&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Calendar.instance<br />
cal.with&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;clear()<br />
&nbsp;&nbsp;&nbsp;&nbsp;set(YEAR,&nbsp;</span><span style="color: #000000;">2009</span><span style="color: #000000;">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;MONTH,&nbsp;SEPTEMBER<br />
&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;DATE,&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;DATE,&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;"><br />
}<br />
</span><span style="color: #0000ff;">assert</span><span style="color: #000000;">'</span><span style="color: #000000;">September&nbsp;6,&nbsp;2009</span><span style="color: #000000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;cal.time.format(</span><span style="color: #000000;">'</span><span style="color: #000000;">MMMM&nbsp;d,&nbsp;yyyy</span><span style="color: #000000;">'</span><span style="color: #000000;">)<br />
</span></div>
<br />
<img src ="http://www.blogjava.net/mstar/aggbug/294143.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2009-09-07 10:51 <a href="http://www.blogjava.net/mstar/archive/2009/09/07/294143.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gbk_to_utf8</title><link>http://www.blogjava.net/mstar/archive/2008/03/11/gbk_to_utf8_use_groovy.html</link><dc:creator>黑灵</dc:creator><author>黑灵</author><pubDate>Tue, 11 Mar 2008 01:44:00 GMT</pubDate><guid>http://www.blogjava.net/mstar/archive/2008/03/11/gbk_to_utf8_use_groovy.html</guid><wfw:comment>http://www.blogjava.net/mstar/comments/185259.html</wfw:comment><comments>http://www.blogjava.net/mstar/archive/2008/03/11/gbk_to_utf8_use_groovy.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/mstar/comments/commentRss/185259.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mstar/services/trackbacks/185259.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 前些时候需要把项目中的文本文件都从GBK编码转换为UTF-8编码. 如果要手动的一个个的改, 那可费事了. 反正想学学Groovy, 就用Groovy做的转换脚本吧.&nbsp;&nbsp;<a href='http://www.blogjava.net/mstar/archive/2008/03/11/gbk_to_utf8_use_groovy.html'>阅读全文</a><img src ="http://www.blogjava.net/mstar/aggbug/185259.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mstar/" target="_blank">黑灵</a> 2008-03-11 09:44 <a href="http://www.blogjava.net/mstar/archive/2008/03/11/gbk_to_utf8_use_groovy.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>