Groovy 闭包

Groovy 闭包

1、闭包参数
1
2
3
def clouser = { String name ->
println "Hello groovy by ${name}"
}
1
2
3
def clouser = {
println "Hello groovy by ${it}"
}
1
clouser('wcq')

闭包和kotlin一样,有默认的参数名it

2、闭包返回值
1
2
3
def clouser = {
println "Hello groovy by ${it}"
}

上面代码的默认返回值是null

3.闭包的用法
  • 与基本类型的结合使用

    1
    2
    3
    4
    5
    6
    7
    int x = fab(5)
    int fab(int number) {
    int result = 1
    1.upto(number, { num -> result *= num })
    return result
    }
    println x
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int y = cal(5)
    int cal(int number) {
    int result = 0
    number.times {
    //note: time方法开始的值是0
    num -> result += num
    }
    return result
    }
    println y
  • 与String结合使用

    1
    2
    3
    4
    5
    String str = 'ChangQin251129'
    //each的遍历
    str.each {s ->
    print s.toLowerCase()
    }
    1
    2
    3
    4
    //find 找到符合条件的第一个
    println str.find { s ->
    return s.isNumber()
    }
    1
    2
    3
    4
    5
    //找到符合条件的所有值
    def list = str.findAll { s ->
    return s.isNumber()
    }
    println list.toListString()
    1
    2
    3
    4
    //遍历输入项,查看是否有一项符合条件
    def isContainNumber = str.any {s-> s.isNumber() }
    //遍历输入项,查看是否所有项都符合条件
    def totalIsNumber = str.every { s->s.isNumber() }
    1
    2
    3
    4
    def list2 = [1, 'a', 1.23, true ]
    def types = list2.collect { it.class }
    println types
    //each返回的是自身 collect返回的是一个集合

  • 与数据结构结合使用

  • 与文件结合使用