参考:Groovy入门经典书籍
列表(list)映射(map)范围(range)为引用其他对象的集合;
列表
例子 | 说明 |
---|---|
[1,2,3,4] | 整形列表 |
['better','Joy',124] | 不同类型的列表 |
['better','Joy',[124,11,33]] | 不同类型的列表 |
用来存储数据项的有序集合,并且集合可以嵌套,而且可以包含不同类型的数据项;
例子 | 说明 |
---|---|
[1,2,3,4] | 整形列表 |
['better','Joy',124] | 不同类型的列表 |
['better','Joy',[124,11,33]] | 不同类型的列表 |
列表操作相关方法
// 取值操作
def numbers = [1,2,3,4,5,6]
println(numbers[0]) // 1
println(numbers[-1]) // 6
println(numbers[1..4]) // 返回列表[2,3,4,5]
println(numbers[1,4]) // 返回列表[2,5]
// 赋值操作
numbers[0] = ["better", "a"]
println(numbers) // [[better, a], 2, 3, 4, 5, 6]
numbers << 8 // leftShift运算符
println(numbers) // [[better, a], 2, 3, 4, 5, 6, 8]
// 其他操作
println(numbers.getClass().getName()) // 默认ArrayList实例
// as 强制使用LinkedList
println(([11,22,33] as LinkedList).getClass().getName())
映射
例子 | 说明 |
---|---|
['better':'zhao', 'joy':'chen'] | 名姓集合 |
['odd':[2,4,6,8], 'even':[1,3,5,7] | 字符串型关键字与列表 |
[:] | 空映射 |
类似于Map。
例子 | 说明 |
---|---|
['better':'zhao', 'joy':'chen'] | 名姓集合 |
['odd':[2,4,6,8], 'even':[1,3,5,7] | 字符串型关键字与列表 |
[:] | 空映射 |
映射操作相关方法
def names = ['better':'zhao', 'joy':'chen']
// 取值
println(names['better']) // zhao
println(names.get('better')) // zhao
// 赋值
names['better'] = [1,2,3,4]
println(names) // [better:[1, 2, 3, 4], joy:chen]
println(names.keySet()) // [better, joy]
println(names.values()) // [[1, 2, 3, 4], chen]
范围
表示序列值得一种简单方法,通过 start end 来确定边界;
println(1..5) // [1,2,3,4,5]
println(1..<5) // [1, 2, 3, 4]
println(5..1) // [5,4,3,2,1]
println('A'..'D') // [A,B,C,D]
println((1..5).getTo()) //5
println((1..5).getFrom()) //5
println((1..5).getClass().getName()) // groovy.lang.IntRange
方法
方法用 def 来定义
def methodName(param1,param2,param3) {
}
默认参数
可使用默认参数,来解决重载方法过多问题,如:
@Test
void test9() {
println(chengfang(4))
}
private def chengfang(value, time = 2) {
def result = value
for (i in 1..<time) {
result *= result
}
return result // 返回值, true 可省略,最后一行表示返回
}
动态类型与静态类型方法
方法的定义中,使用动态的返回类型,与动态的参数,如下:
// 动态类型方法,返回值,参数都是动态指定的
def times(x, y) {
return x * y
}
@org.junit.Test
void test1() {
println("3 * 4 = ${times(3, 4)}")
println("better * 4 = ${times('better', 4)}") // 连续4个better
}
// 静态类型方法(指定了方法的返回类型 int ,参数的类型)
// 上面test1方法中第二条语句,运行会产生异常
int times2(int x, int y) {
return x * y
}
网友评论