4、静态import
我是最早在.net framework 3.5上使用类似import static这种语法的,用起来相当方便的说,但JDK一直没有引入这玩意儿,按道理说加上这么个小功能是很容易实现的。不过Groovy倒是带来来功能更强大的import static语法,用起来也很方便:
package plswg.edu.groovy.basic// 将Integer类的MAX_VALUE静态成员变量引入import static Integer.MAX_VALUE// 将Double类的parseDoubl静态成员方法引入import static Double.parseDouble// 给静态引入赋予别名import static Boolean.TRUE as T // 将Boolean.TRUE取名为Timport static Boolean.FALSE as F // 将Boolean.FALSE取名为F// 给静态引入的方法赋予别名import static Calendar.getInstance as Now// 代码中凡是用到MAX_VALUE,指的都是Integer.MAX_VALUEprintln MAX_VALUE// 代码中凡是用到parseDouble,指的都是Double.parseDoubles = "123.123"println parseDouble(s); // 代码中凡是使用T的地方表示true,使用F的地方表示falseprintln Tprintln !Tprintln F// 代码中凡是使用Now的地方表示Calendar.getInstanceprintln Now().get(Calendar.HOUR)这玩意儿的主要作用就是避免重复书写哪些又臭又长的类名,随着JDK类库的不断增加,类名字是越来越长,像造句一样,import static恰好解决了这一问题,还是很贴心的。
5、分支结构语句
Groovy的结构化语句仍旧是三种:顺序结构、分支结构和循环结构,其中分支结构和循环结构增加了很多意想不到的功能,先看分支结构:
package plswg.edu.groovy.basic// groovy中if条件分支的新规定// groovy中,非0的数值可以表示trueint num = 0if (num) { println "True"} else { println "False"}println (++num ? "True" : "False")if (!!num) { // !!运算符可以将num转化为boolean类型 println "num=${num}为${!!num}"}println ""// 引用为null时,表示falseObject o = nullif (o) { println "True"} else { println "False"}o = new Date()if (o) { println "True"} else { println "False"}println ""// 字符串为""时,表示falseString s = ""if (s) { println "True"} else { println "False"}s += "hello"if (s) { println "True"} else { println "False"}println ""// 集合为空时,表示FalseArrayList array = new ArrayList()if (array) { println "True"} else { println "False"}array.add(100)if (array) { println "True"} else { println "False"}println ""// groovy中switch选择分支的新规定// switch对字符串类型的支持print "Please input your words: "s = new BufferedReader(new inputStreamReader(system.in)).readline()switch (s) {case "how are you": println "fine,thank you" break;case "how do you do": println "how do you do too" break;default: println "nice to meet you"}// switch对集合和范围的支持n = new Random().nextInt(101)print "you got ${n} point,"switch (n) {case [98,99,100]: // n为98,100这三个数字时 println "very good!!" break;case 90 .. 97: // n为90-97之间时 println "nice job!!" break;case 70 .. 89: // n为70-89之间时 println "good" break;case 60 .. 79: // n为60-79之间时 println "can be better" break;case {it > 0 && it < 60}: // n比0大且比60小时 println "too bad" break;case 0: // n为0时 println "nothing to say" break;}首先,Groovy对boolean类型放宽了限制: 常量true和false分别表示“真”和“假”; null表示false,非null表示true; 空字符串""表示false,非空字符串表示true; 0表示false,非0表示true; 空集合表示false,非空集合表示true; 好了,从这一角度上,Groovy确实和JavaScript或者PHP非常相似了,用起来非常方便。
Groovy中对于switch语句的修改也是非常夸张的,这让我甚至有些怀疑Groovy中的switch是否还能达到O1的执行效率,因为Groovy的swtich表现的太像嵌套的if...else if了,在例子中,switch的case后面可以跟随如下几种玩意儿:
常量,在Groovy中,case后的常量包括数值型常量或字符串类型常量,方便很多了,JDK7中新增加了使用字符串常量的case语句,而在.net framework 1.1中早就有了,诸如Basic,PHP,Python,JavaScript等脚本,更是一开始就支持字符串常量的case语句; Range:即范围,语法 n1 .. n2 表示n1和n2之间的所有数值n(n1 <= n <= n2); Collection:集合,语法 [a1,a2,a3,...,an],表示由中括号中的n个元素构成的集合,其中各个元素类型不必统一; 闭包:由 { 语句 } 构成的匿名函数体,这个后面会重点讲述,这里只要知道,一旦case之后的闭包返回true,则冒号之后的代码将会执行; 总之Groovy对分支语句的改造,让其更符合主流动态语言的特点,目前大家都在玩动态语言,就算强类型语言例如C#也在向动态语言方向靠拢,C++有泛型可以一直淡定,Java也有泛型,但那就不是个玩意儿。Groovy这下改的彻底,该有的全都有了! 总结以上是内存溢出为你收集整理的Groovy基本语法(2)全部内容,希望文章能够帮你解决Groovy基本语法(2)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)