2015-11-22 9 views
5

Sto seguendo un tutorial per HaxeFlixel che utilizza il linguaggio Haxe. Ora non ho alcuna esperienza in Haxe, ma ho deciso di sfidare il tutorial dal momento che ho esperienza in Java e Haxe come un linguaggio sembra stranamente simile a Java.Utilizzo dell'operatore di frecce in Haxe e altre domande correlate al tipo variabile

Finora, stava procedendo senza intoppi. Tuttavia, mi sono imbattuto in questo pezzo di codice e ho alcune domande:

class FSM 
{ 
    public var activeState:Void->Void; 

    public function new(?InitState:Void->Void):Void 
    { 
     activeState = InitState; 
    } 

    public function update():Void 
    { 
     if (activeState != null) 
      activeState(); 
    } 
} 

Adesso ho capito che questa è una classe chiamata FSM e ha una variabile chiamata activeState.

Ecco le mie domande:

  1. Qual è il tipo di activeState? Capirei se fosse qualcosa come activeState:Void ma cosa fa il ->? È usato come un puntatore? È un puntatore vuoto che punta a un'altra variabile void?

  2. Che cosa significa il ? prima del InitState:Void->Void?

  3. Dopo l'istruzione if, il activeState viene chiamato come una funzione utilizzando le parentesi. Tuttavia, activeState è una variabile e non una funzione. Quindi, cosa fa esattamente l'istruzione if?

anche un'altra domanda:

public var playerPos(default, null):FlxPoint; 

Capisco playerPos è un'istanza della classe FlxPoint, ma ciò che fa la default e null fare?

risposta

9
  1. Il tipo è Void->Void - è un function type, in questo caso una funzione che non accetta argomenti e restituisce Void.

  2. ? indica uno optional argument. In questo caso è equivalente alla scrittura di new(InitState:Void->Void = null).

  3. activeState è una variabile, ma memorizza una funzione, come hai indovinato, chiama activeState().

(default, null) indica che playerPos è un property. Con default come identificativo di accesso in lettura e null come identificativo di accesso in scrittura, è di sola lettura al di fuori della classe in cui è definito.

+0

Chiaro e conciso. Grazie! –