- Grails技术精解与开发实战
- 郭宏宸 王永超 贺大庆编著
- 893字
- 2025-01-07 16:27:25
2.1.2 基本语法
1. 注释
与大部分语言相同,Groovy中行注释使用//符号,块注释使用/*······*/。
在groovydoc的注释方式中,可以对类、成员变量、方法进行注释,该注释以/**开头,以*/结尾,每行以*开头,形式如代码2.5所示。
/** * 类的注释 */ class Person { /** 人员姓名(属性注释)*/ String name /** * 方法注释,包括方法参数和返回值 * * @param otherPerson the person to greet * @return a greeting message */ String greet(String otherPerson) { "Hello ${otherPerson}" } }
代码2.5 groovydoc注释方式示例
2. 关键字
Groovy中关键字列举如表2.1所示。
表2.1 Groovy中关键字列举
3. 标识符
在Groovy中可以使用部分Unicode码、英文字符、数字,以及-、等符号组成的字符串作为标识符,但是首个字符不能是数字和特殊字符。
4. 变量声明
Groovy是一种弱类型语言,对于基础类型,无须处理转化问题,声明时也可不指明变量类型,使用关键字def声明变量,如代码2.6所示。
def firstName = '三' // 不指明变量类型 String lastName = '张' // 指明变量类型 def personList = ['张三', '李四', '王五'] // 定义并赋值 def personMap = ['张三': 5, '李四': 6] def emptyList = [] // 声明空List def emptyMap = [:] // 声明空Map def age = 10 def amount = 10.56
代码2.6 Groovy变量声明
5. 控制结构:条件
Groovy语法中使用if...else...作为条件控制语句,与Java相同。同时,Groovy提供的switch语句的匹配功能也更加强大,可以支持列表、范围以及正则表达式,各种使用方式可以参考代码2.7,读者可以修改x的值,测试匹配结果。
def x = "foo" def result = "" switch (x) { case "foo": // 匹配字符串 result = "found foo" break case [4, 5, 6, 'inList']: // 匹配数组元素 result = "list" break case 12..30: // 匹配范围 result = "range" break case Integer : // 匹配对象类型 result = " integer" break case ~/fo*/: // 将对象转为字符串并使用正则表达式 result = "foo regex" break case { it < 0 }: // 使用it result = " negative" break default : // 默认值 result = " default" } println(result)
代码2.7 Groovy控制结构:条件
6. 控制结构:循环
Groovy拥有标准的while、for、for-in、break以及continue的支持。值得一提的是,它更精简便捷的for-in语法,可以针对数组、范围、映射等对象进行迭代,如代码2.8所示。
def val = 'hello' for(i in 0..5) { // 可以试试替换为0..<5 println val } def array = (0..4).toArray() def x = 0 for ( i in array ) { x += i } def map = ['abc':1, 'def':2, 'xyz':3] x = 0 for ( e in map ) { x += e.value } assert x == 6
代码2.8 Groovy控制结构:循环
7.异常捕获
Groovy的异常捕获和Java相同,可以使用try-catch-finally、try-catch、try-finally来定义需要异常捕获的代码块,异常捕获的示例如代码2.9所示。
try { 'text'.toLong() // ……其他业务逻辑 } catch ( e ) { // 捕获异常 println(e.message) } finally { // 不论是否抛出异常,都会执行 // …… }
代码2.9 Groovy异常捕获