Skip to content
本文 下载 Markdown

函数与重载 ​

函数以 fn 开头,参数采用 name: Type,返回类型写在 -> 后面。省略返回类型的场景仍受当前类型系统限制;入门时建议显式写出。

kelyra
fn add(a: i32, b: i32) -> i32 {
  return a + b;
}

程序入口 ​

@main 可标记任意名称的无参数函数,但其返回类型必须是 i32。一个程序恰好需要一个入口。

同名函数 ​

普通函数和方法可以同名,只要参数类型序列不同。返回类型不用于区分重载。调用时优先选择参数类型完全匹配的候选;如果多个候选仍无法区分,编译器会报歧义。

kelyra
fn scale(value: i32) -> i32 { return value * 2; }
fn scale(value: f32) -> f32 { return value * 2.0; }

编译器不会在重载选择时隐式提升数值类型。构造函数重载和同名泛型函数模板仍未支持。

函数值 ​

函数类型写作 fn(i32) -> i32。无捕获的顶层函数可作为回调传给兼容的参数,也可用于 C 函数指针互操作。

认真写代码,也认真写说明。