函数 ==== 函数定义 -------- 使用 ``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 作用域 ------ 函数参数和函数体内声明的变量为局部变量。顶层函数与类存储在全局作用域, 因此支持递归和跨函数引用。