有市场就没有需求, 有需求没市场的事情从公司的角度去考虑;不应该给你实现需求的成本的!就这样我们接到一个让你业余用业余时间去完成的任务; 活动配置数据生成工具。

  为了顺利把这个工具做成,你可以拿任何一个你想学的语言去干这事。 纠结啊 。。。, 于是抱着让这是早日完成的心态。 我就选择了用 Groovy 来做这件事请; 理由很简单。 Java Swing 做 GUI 应用程序实在太麻烦; 而 Groovy 中的 SwingBuilder 取弥补了 Swing 中的部分不足。 能够简化界面控件使用与代码, 但内在的事件驱动模型是没有变化的。 于是乎开始动手吧。

1. 开发环境

Mac 10.6.x + IntelliJ IDEA 14 + Groovy 2.3.6

Google 上有很多的配置介绍。

2. GroovyConsole 初试

x = 1;println x;x = new java.util.Date();println x;x = -3.1499392;println x;x = false;println x;x = Boolean.TRUE;println x;x = 'Hi'println x;

command + R 结果如下

1

Sun Dec 28 00:50:45 CST 2014

-3.1499392

false

true

Hi

总结:x 很像 JavaScript 中万能的 var 申明类型,不过此处连 var 都没有太简单了。 脚本语言啊! 弱类型。

3. Collection 测试

x = new java.util.Date();tempList = [1, -2, 0.3245788663, 'a', x];println tempList[0];println tempList[1];println tempList[2];println tempList[3];println tempList[4];

command + R 结果如下

1

-2

0.3245788663

a

Sun Dec 28 00:50:45 CST 2014

总结: 弱类型集合

4. Map 测试

scores = [ "Brett":100, "Pete":"Did not finish", "Andrew":86.87934 ]println scores["Pete"];

> Did not finish

如果将 key 不用双引号 “”  呢,结果如何呢?

println scores["Pete"];

    Exception thrown

    groovy.lang.MissingPropertyException: No such property: Pete for class: ConsoleScript23

    at ConsoleScript23.run(ConsoleScript23:3)

至此我们能不能推断非双引号包围的它就认为是类呢。 有待确认

5. 空的集合与 Map

emptyMap = [:]emptyList = []println emptyMap.size()println emptyList.size()

> 0

> 0

6. 条件判断

amPM = Calendar.getInstance().get(Calendar.AM_PM)println (amPM);if (amPM == Calendar.AM){    println("Good morning")} else {    println("Good evening")}

> 0

> Good morning

* else 删除也是可以的。

7. 逻辑与算术运算

titanicBoxOffice = 1234600000titanicDirector = "James Cameron"trueLiesBoxOffice = 219000000trueLiesDirector = "James Cameron"returnOfTheKingBoxOffice = 752200000returnOfTheKingDirector = "Peter Jackson"theTwoTowersBoxOffice = 581200000theTwoTowersDirector = "PeterJackson"titanicBoxOffice > returnOfTheKingBoxOffice  // evaluates to truetitanicBoxOffice >= returnOfTheKingBoxOffice // evaluates to truetitanicBoxOffice >= titanicBoxOffice         // evaluates to truetitanicBoxOffice > titanicBoxOffice          // evaluates to falsetitanicBoxOffice + trueLiesBoxOffice < returnOfTheKingBoxOffice + theTwoTowersBoxOffice  // evaluates to falsetitanicDirector > returnOfTheKingDirector    // evaluates to false, because "J" is before "P"titanicDirector < returnOfTheKingDirector    // evaluates to truetitanicDirector >= "James Cameron"           // evaluates to truetitanicDirector == "James Cameron"           // evaluates to true

至此,