2015-08-10 6 views

Antwort

14

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); 
    } 
} 
0

Sie sind zwei verschiedene Dinge. EIN ? Bedeutet einen optionalen Parameter. Wenn also vom Funktionsaufruf komplett ausgeschlossen werden kann und keine Substitution stattfindet.

(x: float = 12) ist ein Standardparameter. Das heißt, wenn es vom Funktionsaufruf ausgeschlossen wird, wird der Wert 12 verwendet.

Verwandte Themen