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

dar*_*rse 5 haxe haxeflixel

我正在学习使用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();
     }
 }
Run Code Online (Sandbox Code Playgroud)

现在我明白这是一个被调用的类,FSM并且有一个名为的变量activeState.

这是我的问题:

  1. 是什么类型的activeState?我会理解是否有类似activeState:Void->完成的内容是什么?它被用作指针吗?它是一个指向另一个void变量的void指针吗?

  2. 什么是?InitState:Void->Void意味着什么?

  3. 在if语句之后,activeState使用括号将其称为函数.但是,它activeState是一个变量而不是一个函数.那么if语句究竟做了什么呢?

还有一个问题:

public var playerPos(default, null):FlxPoint;
Run Code Online (Sandbox Code Playgroud)

我的理解playerPos是实例FlxPoint类,但到底是什么的defaultnull做的?

Gam*_*a11 9

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

  2. ?表示可选参数.在这种情况下,它相当于写作new(InitState:Void->Void = null).

  3. activeState是一个变量,但它存储一个函数 - 就像你猜到的那样,activeState()调用它.

(default, null)表示这playerPos是一个属性.使用default读访问标识符和null写访问标识符,它在其定义的类之外是只读的.