📜  Groovy-方法(1)

📅  最后修改于: 2023-12-03 15:01:04.906000             🧑  作者: Mango

Groovy-方法

Groovy 是一种基于 JVM 的动态语言,它与 Java 兼容,但是提供许多很好的增强特性。这份介绍将会向你介绍 Groovy 中的方法。

定义方法

在 Groovy 中,定义一个方法与 Java 的方式十分相似。可以使用 def 关键字定义一个方法:

def sayHello(name) {
    println "Hello, ${name}!"
}

上面定义了一个名为 sayHello 的方法,在方法的括号里面声明了一个 name 参数。在方法的主体内使用了 Groovy 的字符串插值语法。可以像下面这样调用 sayHello 方法:

sayHello("World")
// => Hello, World!
默认参数

在 Groovy 中,我们可以给方法定义默认的参数。如果不在调用方法时传递参数,则使用默认参数。

def printPerson(name = "John Doe", age = 30) {
    println "Name: ${name}, Age: ${age}"
}

上面的方法中定义了两个参数,如果在调用该方法时不传递参数,则会使用默认参数。如果传递了参数,则会覆盖默认参数。

printPerson()
// => Name: John Doe, Age: 30

printPerson("Jane Doe", 25)
// => Name: Jane Doe, Age: 25
可变参数

在 Groovy 中,你可以使用可变参数来将不确定数量的参数传递给方法。在方法定义时,在参数前面加上星号(*)即可。所有传递给方法的参数都将被捆绑在一个列表中。

def sum(int... numbers) {
    return numbers.sum()
}

上面的方法中,定义了一个可变参数 numbers,它会将所有传递给方法的参数捆绑在一个列表中,并返回它们的和。以下为调用该方法的方式:

println sum(1, 2, 3, 4) // => 10
println sum(10, 20, 30, 40, 50) // => 150
闭包参数

在 Groovy 中,你可以将一个闭包作为方法的参数。在方法定义时,将闭包作为参数传递,并在方法内使用 delegate 对象调用它。

def operateWithClosure(closure) {
    return closure.delegate(10, 20)
}

以上方法定义了一个参数为 closure 的方法,使用了 delegate 对象调用了闭包,并且传递了两个整数作为闭包的参数。

下面为使用闭包参数的方式:

println operateWithClosure({ a, b -> a + b })
// => 30

println operateWithClosure({ a, b -> a * b })
// => 200
返回值

在 Groovy 中,默认情况下,方法最后一个执行的语句将成为方法的返回值。但是,可以使用 return 关键字来明确指定一个返回值。

def isOdd(int number) {
    if (number % 2 == 0) {
        return false
    }
    return true
}

上面的方法中,使用了 return 关键字,以明确指定方法的返回值。也可以通过省略 return 关键字,使用简单的表达式作为方法的返回值。

def isOdd(int number) {
    number % 2 != 0
}

上面的方法和前面的方法等价。

总结

Groovy 的方法提供了许多方便的特性,包括默认和可变参数、闭包参数和隐式返回值。这使得程序员能够更加灵活、高效地编写代码。