Haxe 中的箭头运算符用法和其他与变量类型相关的问题

Arrow operator usage in Haxe and other variable type related questions

我正在学习使用 Haxe 语言的 HaxeFlixel 教程。现在我没有任何 Haxe 的经验,但我决定勇敢地学习教程,因为我有 Java 的经验并且 Haxe 作为一种语言似乎与 Java.

非常相似

到目前为止,一切进展顺利。然而,我遇到了这段代码,我有几个问题:

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

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

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

现在我明白这是一个名为 FSM 的 class 并且有一个名为 activeState 的变量。

这是我的问题:

  1. activeState的类型是什么?如果是 activeState:Void 我会理解,但是 -> 完成了什么?它用作指针吗?是指向另一个void变量的void指针吗?

  2. InitState:Void->Void前面的?是什么意思?

  3. 在 if 语句之后,activeState 像使用括号的函数一样被调用。但是,activeState 是变量而不是函数。那么 if 语句到底做了什么?

还有一个问题:

public var playerPos(default, null):FlxPoint;

我明白 playerPosFlxPoint class 的实例,但是 defaultnull 有什么作用?

  1. 类型是 Void->Void - 它是一个 function type,在这种情况下是一个不带参数的函数和 returns Void.

  2. ?表示一个optional argument。在这种情况下,它等同于编写 new(InitState:Void->Void = null).

  3. activeState 是一个变量,但它存储了一个函数 - 正如您猜到的那样,activeState() 调用它。

(default, null)表示playerPos是一个property。使用 default 作为读访问标识符,null 作为写访问标识符,它在 class 之外是只读的。