企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
Haxe 允许通过分配一个常量值来为参数提供默认值,: ~~~ class Main { static public function main() { // ?i : Int -> ?s : String -> String $type(test); trace(test()); // i: 12, s: bar trace(test(1)); // i: 1, s: bar trace(test(1, "foo")); // i: 1, s: foo trace(test("foo")); // i: 12, s: foo } static function test(?i = 12, s = "bar") { return "i: " +i + ", s: " +s; } } ~~~ 这个示例和前面 [可选参数(第2.6.1节)](http://#) 中的非常相似,唯一的区别是函数的参数 `i` 和 `s` 被赋值为 `12` 和 “`bar`”。效果是,默认值取代 `null` 被使用,可以在调用时省略某个参数。Haxe 中的默认值并不是类型的一部分,而且不能在调用时更改函数的默认值(意指只应用于当次调用,而不会改变函数的默认值定义。除非函数是 [内联(第4.4.2节)](http://#) 的,被认为是一个比较典型的处理)。在一些目标语言中,编译器可能仍然传递 `null` 作为省略的参数值,生成类似于这样的代码到函数中: ~~~ static function test(i = 12, s = "bar") { if (i == null) i = 12; if (s == null) s = "bar"; return "i: " +i + ", s: " +s; } ~~~ 在一个不使用默认值可能有时更可行的方案的性能关键代码中,这应该被考虑。