枚举和静态类型
Enums and static typing
我在一些 gdscript 代码中声明了一个枚举。
然后,我想将一些变量声明为那种类型的枚举。
这可能吗。我知道 GDScript 允许声明 var 的静态类型。我使用过的每种语言都允许您将枚举视为变量。
以下代码为我产生以下错误...
enum XDir {
None,
Left,
Right
}
enum YDir {
None,
Up,
Down
}
var x_dir : XDir
var y_dir : YDir
Parser Error: Identifier 'XDir' is not a valid type (not a script or
class), or could not be found on base 'self'.
这还不可能。 GDScript 中的枚举是常量字典的语法糖,不是实际类型。
您必须使用 int
作为类型,直到枚举成为真正的类型。
请注意,您仍然可以向 export
提供枚举,例如
export(XDir) var x_dir: int
要在运行时强制执行枚举值,您可以执行以下操作:
assert(XDir.has(x_dir))
我在一些 gdscript 代码中声明了一个枚举。
然后,我想将一些变量声明为那种类型的枚举。
这可能吗。我知道 GDScript 允许声明 var 的静态类型。我使用过的每种语言都允许您将枚举视为变量。
以下代码为我产生以下错误...
enum XDir {
None,
Left,
Right
}
enum YDir {
None,
Up,
Down
}
var x_dir : XDir
var y_dir : YDir
Parser Error: Identifier 'XDir' is not a valid type (not a script or class), or could not be found on base 'self'.
这还不可能。 GDScript 中的枚举是常量字典的语法糖,不是实际类型。
您必须使用 int
作为类型,直到枚举成为真正的类型。
请注意,您仍然可以向 export
提供枚举,例如
export(XDir) var x_dir: int
要在运行时强制执行枚举值,您可以执行以下操作:
assert(XDir.has(x_dir))