groovy入门
最近在udemy上学习gradle,中间穿插了groovy的内容,本文主要介绍groovy的基础数据类型以及语法,如果本文对您有帮助,请不要吝啬您的点赞,谢谢~
groovy文件编译运行
- 创建文件
Start.groovy
,并写上:println("hello")
, 利用groovy命令行编译运行:groovy src/com/xj/groovy/Hello/Start.groovy
, 得到如下结果:
groovy的基础类型
float
a = 10.24F
println a
println a.class
输出:
可以看见groovy里面的float类型就是Java里面的Float类型
String
常规String
- 单引号或者双引号
s = 'Hello' // "Hello"
println s
println s.class
输出:
- 可以换行的
s = '''
All the power is with in you.
You can do anything and everything
'''
println(s)
println(s.class)
输出
GStringImpl
name = "friend"
s = "hello ${name}"
println s
println s.class
输出:
正则表达式
emailPattern = /([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})/
println emailPattern.getClass()
println "test@gmail.com" ==~ emailPattern
println "testgmail.com" ==~ emailPattern
输出:
List
LinkedList l = [1, 2, 3]
println l // [1, 2, 3]
println l.class // class java.util.LinkedList
l << 4
println l // [1, 2, 3, 4]
l = l + [5, 6, 7]
println l // [1, 2, 3, 4, 5, 6, 7]
println l - [3, 5] // [1, 2, 4, 6, 7]
l.each {println it} // 1 2...
l.reverseEach {println it} // 7 6 ..
l.eachPermutation {println it} // 排列组合
Map
m = [:]
println(m) // [:]
println(m.getClass()) // class java.util.LinkedHashMap
m = [courseName: 'Gradle', rating: 5, price: 20]
println(m) // [courseName:Gradle, rating:5, price:20]
m.each {
k, v ->
println k
println v
}
println m.courseName // Gradle
println m['courseName'] // Gradle
println m.get('courseName') // Gradle
Groovy语法
Closures with {}
c = {
n = 2 -> println(n%2 == 0 ? "even": "odd")
}
c.call() // even
c.call(1) // odd
Closures 2
4.times {n->print(n)}
println()
4.times {print(it)}
println()
输出:
Method
方法
int product(int x, int y) {
return x*y
}
println product(10, 5) // 50
result = product 10, 5
println(result) // 50
带默认值
int product(int x = 3, int y) {
return x*y
}
result = product 5
println(result) // 15
map作为参数
void display(Map productDetails) {
println productDetails.name
println productDetails.price
}
display([name: 'IPhone', price: 1000])
Class
class Patient {
def firstName, lastName, age
static hospitalCode = "huoshan"
void setLastName(lastName) {
if (lastName == null) {
throw new IllegalArgumentException("Last name can not be null");
}
this.lastName = lastName
}
static void display() {
println hospitalCode
}
}
p = new Patient(firstName: 'jhon', age: 40, lastName: 'jack')
p.setLastName("buffer")
println p.firstName + " " + p.lastName + " " + p.age // jhon buffer 40
Patient.display() // "huoshan"