Определение функций

Для определения функции используется ключевое слово 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