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
的变量。
这是我的问题:
activeState
的类型是什么?如果是 activeState:Void
我会理解,但是 ->
完成了什么?它用作指针吗?是指向另一个void变量的void指针吗?
InitState:Void->Void
前面的?
是什么意思?
在 if 语句之后,activeState
像使用括号的函数一样被调用。但是,activeState
是变量而不是函数。那么 if 语句到底做了什么?
还有一个问题:
public var playerPos(default, null):FlxPoint;
我明白 playerPos
是 FlxPoint
class 的实例,但是 default
和 null
有什么作用?
类型是 Void->Void
- 它是一个 function type,在这种情况下是一个不带参数的函数和 returns Void
.
?
表示一个optional argument。在这种情况下,它等同于编写 new(InitState:Void->Void = null)
.
activeState
是一个变量,但它存储了一个函数 - 正如您猜到的那样,activeState()
调用它。
(default, null)
表示playerPos
是一个property。使用 default
作为读访问标识符,null
作为写访问标识符,它在 class 之外是只读的。
我正在学习使用 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
的变量。
这是我的问题:
activeState
的类型是什么?如果是activeState:Void
我会理解,但是->
完成了什么?它用作指针吗?是指向另一个void变量的void指针吗?InitState:Void->Void
前面的?
是什么意思?在 if 语句之后,
activeState
像使用括号的函数一样被调用。但是,activeState
是变量而不是函数。那么 if 语句到底做了什么?
还有一个问题:
public var playerPos(default, null):FlxPoint;
我明白 playerPos
是 FlxPoint
class 的实例,但是 default
和 null
有什么作用?
类型是
Void->Void
- 它是一个 function type,在这种情况下是一个不带参数的函数和 returnsVoid
.?
表示一个optional argument。在这种情况下,它等同于编写new(InitState:Void->Void = null)
.activeState
是一个变量,但它存储了一个函数 - 正如您猜到的那样,activeState()
调用它。
(default, null)
表示playerPos
是一个property。使用 default
作为读访问标识符,null
作为写访问标识符,它在 class 之外是只读的。