groovy

  1. 特性
  2. 语法
    1. 基础语法
    2. 流程控制
    3. 函数
    4. 闭包
  3. 常用操作
    1. IO

Groovy 语言快速入门
30分钟groovy快速入门并掌握

特性

  • Groovy 可以与 Java 语言无缝对接
  • 调用的方法将在运行时被选择
  • Groovy非常容易集成在Java环境中,利用其动态性来做规则引擎、流程引擎、动态脚本环境,非常适合那些不不需要经常发布但又经常变更的场景下使用

语法

基础语法

  • #!/usr/bin/env groovy

  • import java.util.List as jurist

  • 字符串: def str = 'abc'

  • def str = "i am $name" GString

    • 可以用\来构建多行的字符串,像bash shell中一样
    • 可以使用”“”来构建多行字符串,像scala中一样
  • def c = 'a' as char

  • list: def numbers = [1, 2, 3]

    • coll.add("Python")
    • coll << "Smalltalk"
    • coll[5] = "Perl"
    • assert coll[1] == "Java"
    • assert "Java" in coll
    • assert numbers + 5 == [1,2,3,4,5]
    • assert numbers - [2,3] == [1,4]
    • assert numbers.join(",") == "1,2,3,4"
    • assert [1,2,3,4,3].count(3) == 2
    • assert ["JAVA", "GROOVY"] == ["Java", "Groovy"]*.toUpperCase()
  • array:def numArr = [1, 2, 3] as int[]

  • map: def colors = [red: '#FF0000', green: '#00FF00', blue: '#0000FF']

    • colors.red
    • colors['red']
  • range: def range = 0..5

    • assert (0..5).collect() == [0, 1, 2, 3, 4, 5]
    • assert ('a'..'d').collect() == ['a','b','c','d']
  • def pattern = ~/fo*/

    • assert str =~ pattern
  • artist?.toUpperCase() 防止空指针

  • 函数的最后语句值不需要return

  • == 等价于 Java 中的equals方法

  • with

    1
    2
    3
    4
    5
    6
    7
    server.with {
    name = application.name
    status = status
    sessionCount = 3
    start()
    stop()
    }
  • 所有类型都能转成布尔值

    • if (name != null && name.length > 0) {} == if(name){}

流程控制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def x = 1.23
def result = ""
switch (x) {
case "foo": result = "found foo"
// lets fall through
case "bar": result += "bar"
case [4, 5, 6, 'inList']: result = "list"
break
case 12..30: result = "range"
break
case Integer: result = "integer"
break
case Number: result = "number"
break
case { it > 3 }: result = "number > 3"
break
default: result = "default"
}
assert result == "number"

函数

1
2
3
4
5
6
7
def add(int a, int b) {
return a + b
}
//与上面的等价
def add(a, b) {
a + b
}

闭包

1
2
3
4
5
6
7
def closure = {
param -> println param
}

closure('hello')
closure.call('hello')
closure 'hello'

1
2
3
4
5
class Song {
def name
def artist
def genre
}
  • Groovy 自动提供一个构造函数,构造函数接受一个名称-值对的映射,这些名称-值对与类的属性相对应。

常用操作

IO

1
2
3
4
5
new File('/User/lihengming/test.txt').withReader('UTF-8') { reader ->
reader.eachLine {
println it
}
}

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com

💰

×

Help us with donation