2018年11月末,从上家公司离职后进入现在的公司。进入项目以来,发现项目中有很多groovy脚本,以前没接触过groovy,抽时间系统地学一下,也方便后期项目的开发和维护。
groovy和java的渊源以及和规则引擎的比较,作为白板目前还没评论的资格,学语言当然还是直接撸代码来得实在。好在和java同宗,白板之旅。
package groovy /* * Print方法 print println 后面必须跟参数 否则会抛groovy.lang.MissingPropertyException */ //print //println println "helloworld" /* * 单引号中的内容严格对应java中的String 不对$符号进行转义 */ def s1 = 'i am 100 $ dollar' println s1 class Person { String name Integer age } def person = new Person(name:"john",age:18) /* * 双引号“”的内容和脚本语言处理有点像,如果字符中有$符号的话,则会表达式先求值 */ def s2 = "i am 100 ${person.name} dollar" println s2 /* * 三个引号 三个单引号或三个双引号 中的字符串支持随意换行 不同处""" """支持$等特殊符号转义 ''' '''不支持,强String类型 */ def s3 = """ tom is a good boy $s1 """ println s3 def s4 = ''' tom is a good boy $s1 ''' println s4 /** * 定义函数 */ //无参函数 def fun1() { } //有参函数,无需指定参数类型 def fun2() { } //如果制定了函数返回类型,则可不必加关键字def 来定义函数 String fun3() { return "welcome" } //如果不使用return 来设置返回值 ,则函数里最后一句代码的执行结果被设置成返回值 类型不匹配则会报错 Integer fun4() { "a story" "about" "prince" //if this is end类型不匹配 GroovyCastException 4.0 //if this is a number will be return a Integer number 4 } println fun4() /* * assert 断言 可以简单理解为 比较 进行简单的判断 */ def str1 = "abc" assert str1.size() == 3 //assert str1.size() != 3 /* * 循环 */ for (int i =0;i<5;i++ ) { println i + "for 1" } for (i =0;i<5;i++ ) { println i + "for 2" } for (i in 4..8 ) { println i-4 + "for 3" } 5.times { println "circle" } /* *三目运算符 * */ def name def result =name != null?name :"name is error" println result /* * 异常 */ try { // 5/0 }catch(Exception e) { print e } try { // 5/0 }catch(anything) { print anything } /* * Switch */ def age = 36 def rate switch (age) { case 10..26: rate = 0.05 break case 27..36: rate = 0.06 break default: throw new Exception() } println rate /* * asType 数据类型转换 */ def type1 = 100 def type2 = 200.00 def type3 = type2.asType(Integer) def type4 = type1.asType(String) println("groovy 语言学习--语法基础(1) ---end ")