没有市场就没有需求, 有需求没市场的事情从公司的角度去考虑;不应该给你实现需求的成本的!就这样我们接到一个让你业余用业余时间去完成的任务; 活动配置数据生成工具。
为了顺利把这个工具做成,你可以拿任何一个你想学的语言去干这事。 纠结啊 。。。, 于是抱着让这是早日完成的心态。 我就选择了用 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
至此,