没有市场就没有需求, 有需求没市场的事情从公司的角度去考虑;不应该给你实现需求的成本的!就这样我们接到一个让你业余用业余时间去完成的任务; 活动配置数据生成工具。
为了顺利把这个工具做成,你可以拿任何一个你想学的语言去干这事。 纠结啊 。。。, 于是抱着让这是早日完成的心态。 我就选择了用 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 = 1234600000 titanicDirector = "James Cameron" trueLiesBoxOffice = 219000000 trueLiesDirector = "James Cameron" returnOfTheKingBoxOffice = 752200000 returnOfTheKingDirector = "Peter Jackson" theTwoTowersBoxOffice = 581200000 theTwoTowersDirector = "PeterJackson" titanicBoxOffice > returnOfTheKingBoxOffice // evaluates to true titanicBoxOffice >= returnOfTheKingBoxOffice // evaluates to true titanicBoxOffice >= titanicBoxOffice // evaluates to true titanicBoxOffice > titanicBoxOffice // evaluates to false titanicBoxOffice + trueLiesBoxOffice < returnOfTheKingBoxOffice + theTwoTowersBoxOffice // evaluates to false titanicDirector > returnOfTheKingDirector // evaluates to false, because "J" is before "P"titanicDirector < returnOfTheKingDirector // evaluates to truetitanicDirector >= "James Cameron" // evaluates to truetitanicDirector == "James Cameron" // evaluates to true
至此,