Kurze Antwort: Es gibt keinen Grund, ?
in Ihrem Fall zu verwenden.
Lange Antwort: ?
eine andere Bedeutung hat - es implies nullability, was bedeutet, dass es Grundtypen (Int
, Float
, Bool
) in Null<T>
wickelt, um sicherzustellen, dass sie auf NULL festlegbare auch auf statische Ziele (auf dynamische Ziele wie JavaScript und Neko, diese sind in beiden Fällen nullbar). Wenn Sie ein Argument vom Typ Int
haben, die folgenden zwei gleichwertig sind:
function f(i:Null<Int> = null)
function f(?i:Int)
Nun, wenn Sie zusätzlich ein default value zu optionalem Typ hinzufügen, wird dieser Wert verwendet werden, auch wenn Sie null
passieren:
class Test {
static function main() {
f(); // 12
f(null); // 12
}
static function f(?i:Int = 12) {
trace(i);
}
}