Определение функций
Для определения функции используется ключевое слово def
. Затем идёт имя, аргументы и тело функции. Пример:
def function(arg1, arg2) {
println arg1
}
Короткий синтаксис
Возможен короткий синтаксис:
def repeat(str, count) = str * count
что равносильно:
def repeat(str, count) {
return str * count
}
Аргументы по умолчанию
Аргументы функции могут иметь значения по умолчанию.
def repeat(str, count = 5) = str * count
В этом случае обязательным будет только аргумент str
repeat("*") // *****
repeat("+", 3) // +++
Аргументы по умолчанию обязательно должны идти после обязательных аргументов, если такие были.
def repeat(str = "*", count) = str * count
Приведёт к ошибки парсинга: ParseError on line 1: Required argument cannot be after optional
Внутренние функции
Внутри функции можно объявить другую функцию.
def fibonacci(count) {
def fib(n) {
if n < 2 return n
return fib(n-2) + fib(n-1)
}
return fib(count)
}
println fibonacci(10) // 55