println("这是一份关于groovy script的中文文档")
和其他的编程语言一样Groovy脚本的注释有两中
- // 这是行注释
- /* 这是块注释 */
推荐使用块注释的方式
Groovy是一种动态的编程语言,所以变量可以在脚本里面使用def关键字来定义
def x = "hello world"
println(x)
x = 100
println(x)
动态语言,并不是说Groovy没有类型,你也可以在定义变量的时候指定变量类型
Integer x =10
println(x)
// 类型不匹配,赋值会报错
x = "hello world"
println(x)
可以在字符串中直接使用模板替换变量
def name="hello jukay"
def age = 18
def hello = "Hello ${name}"
def a = "i am ${age} years old"
println(name)
println(a)
def age = 18
if (age < 18){
println("你是未成年人")
}else{
println("你是成年人")
}
groovy的case语句如果不break,会一直往下面执行。
def c= 'C'
switch(c) {
case 'A':
println("you got A")
break
case 'B':
println('you got B')
case 'C':
println("you got C")
default:
println('不知道你的成绩')
}
def check(x){
if (x > 1000){
return true
}
return false
}
def check(x){
return x > 1000
}
println(check(1000))
Groovy中null表示不指向任何对于,空字符串表示一个长度为0,不包含任何字符的字符串。一下脚本输出:不相等。
def a = null
if (a == ""){
println("相等")
}else{
println("不相等")
}
数字转字符串
def array = ["Hello","World"]
print(array.join(","))
如果你要使用 . 来访问对于的属性或者放置,如果对象没有初始化,或者指向了null,那么就会产生空指针一样,我们可以使用?来避免这个问题,如下:
class Person{
def getAge(){
return 18
}
}
def p = new Person();
println(p.getAge())
p = null
println(p?.getAge())
使用?的好处是,如果对象是空,并不会抛出空指针异常,而是吧表达式的值认为是null.
使用println函数来打印日志,一般会结合使用字符串模板,如下:
def age=18
println("user age=${age}")
初始化一个列表
def list = [1,2,3,4,'5']
// 定义一个空的列表
def empty_list = []
遍历一个列表
def list = [1,2,3,4]
for(i in list){
println(i)
}
使用索引访问列表中的数据,并且修改他
println(list[0])
list[0] = "hello world"
for(i in list){
println(i)
}
删除和添加列表中的数据
list.add("hellojukay")
for(i in list){
println(i)
}
list.remove("hellojukay")
for(i in list){
println(i)
}
初始化一个map
def map = ['name':"Hellojukay", 'age':18]
// 定义一个空的map
def map2 = [:]
查找元素
println(map.get('name'))
println(map.get('sex')) // print null
println(map['fuck']) // print nulll
map['sex'] = true
println(map.get('sex')) // print true
map.remove('name') // 删除元素
遍历Map
def map = ['name':"Hellojukay", 'age':18]
for(e in map){
printf("key=%s, value=%s\n",e.key,e.value)
}
使用 .. 可以是快速的产一个一个序列,从i到j,如果i==j,那么会产生一个长度为1的列表
def range=1..100
for(i in range){
println(i)
}
range是可以转化成数组或者list的
def range=1..1
for(i in range){
println(i)
}
def arr= range.toArray()
println(arr)
def list = range.toList()
println(list)
list.add("hello")
println(list)
所以一般可以使用下面的方法来快速的生成数组或者list.
println((1..3).toArray())
println((1..3).toList())
def fn(){
println("Hello World")
}
缺省参数
def fn(name="hellojukay") {
println(name)
}
fn()
命名参数
def fn(String name){
println(name)
}
fn(name="hellojukay")
可变长度参数
def fuck(String... names){
for(name in names){
printf("fuck your %s\n",name)
}
}
fuck("hello", "World")