函数

函数定义

使用 fun 关键字定义函数:

fun greet(name: String): String {
    return "Hello, " + name;
}

无返回值函数可省略返回类型:

fun sayHi(): {
    println("Hi!");
}

参数与返回值

参数必须声明类型,返回值类型在参数列表后以 : 标注:

fun max(a: Int, b: Int): Int {
    if (a > b) {
        return a;
    }
    return b;
}

递归

函数支持递归调用:

fun factorial(n: Int): Int {
    if (n <= 1) {
        return 1;
    }
    return n * factorial(n - 1);
}

匿名函数

Jaon 支持匿名函数表达式,可赋值给变量或作为参数传递:

var double = fun(x: Int): Int { return x * 2; };
println(double(5));  // 10

作为高阶函数参数:

fun apply(f: Any, x: Int): Int {
    return f(x);
}

println(apply(double, 7));  // 14

作用域

函数参数和函数体内声明的变量为局部变量。顶层函数与类存储在全局作用域, 因此支持递归和跨函数引用。