首先看一段Java代码:
// PrintIndependenceDay.javaimport java.util.Calendar;
import java.util.Date;public class PrintIndependenceDay {public static void main(String[] args) {Calendar calendar = Calendar.getInstance();calendar.clear();calendar.set(Calendar.MONTH, Calendar.JULY);calendar.set(Calendar.DATE, 4);calendar.set(Calendar.YEAR, 1776);Date time = calendar.getTime();System.out.println(time);}
}
这段代码中我们获得Calendar的实例,然后反复的调用它的方法。是否觉得冗余,因为我们的上下文环境是已知的,在Groovy中我们利用“with”来简化,上面的代码等价的Groovy代码如下:
// PrintIndependenceDay.groovydef calendar = Calendar.instance calendar.with {clear()set MONTH, JULYset DATE, 4set YEAR, 1776println time }
是不是很简洁,我们还有更炫的功能,这要得益于delegate机制,看下面的例子:
// define a closure def myClosure = {// call a method th