Groovy语言学习--语法基础(1)
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 ")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述