可选参数没有?标识符

Optional arguments without ? identifier

http://haxe.org/manual/types-function-default-values.html 的 Haxe 3 手册中,我们有 static function test(?i = 12, s = "bar")

为什么不是 static function test(?i = 12, ?s = "bar")static function test(i = 12, s = "bar")

实际上,?i=1i=1 之间存在细微差别:

  • function test(?i=1):String 的类型是 Null<Int> -> String
  • function test(i=1):String 的类型是 Int -> String

虽然 ?i 表示一个可选参数 – 并且总是暗示可空性 – i=1 表示一个默认值并且应该消除对 Null<T> 框的需要。

参见 Optional Arguments and Nullability and an example