Groovy 闭包


闭包的概念

闭包(Closure)在 Groovy 中是一种特殊的对象,它类似于 Java 中的匿名函数。闭包可以捕获变量,可以作为参数传递,也可以作为方法的返回值。

基本语法

闭包的基本语法是使用 {} 包围一段代码。例如:

def closure = { println "Hello, Groovy!" }
closure() // 调用闭包

参数和返回值

闭包可以接受参数,并且可以有返回值。

  • 带参数的闭包

    def greet = { name ->
        println "Hello, ${name}!"
    }
    greet('Groovy') // 输出:Hello, Groovy!
    
  • 带返回值的闭包

    def square = { int num ->
        return num * num
    }
    println square(3) // 输出:9
    

闭包作为参数

闭包可以作为方法的参数传递,增加了编程的灵活性。

def operate(a, b, operation) {
    operation(a, b)
}

def result = operate(5, 3, { x, y -> x + y })
println result // 输出:8

在集合上使用闭包

闭包在处理集合时特别有用。

  • 列表上的闭包操作

    def numbers = [1, 2, 3, 4, 5]
    numbers.each { num ->
        println num
    }
    
  • 映射上的闭包操作

    def map = ['a': 1, 'b': 2, 'c': 3]
    map.each { key, value ->
        println "$key -> $value"
    }
    

高级用法

闭包还有许多高级用法,例如闭包委托、闭包作用域等,这些内容适合更深入的学习。

总结

Groovy 的闭包是一种强大的工具,它提供了灵活性和强大的表达能力。了解如何有效使用闭包是 Groovy 编程的关键部分。