我如何检查我正在处理的是什么类型?
How do I check what type I am dealing with?
简单地说:我正在寻找 Java 的 instanceof
.
的 Haxe 等价物
这是我的具体问题:
我有一个 class Tile
,它包含一个类型为 Unit
的字段 content
和一个函数 get_content()
return当前存储的对象。 Unit
是在 3 classes Player
、Monster
和 Item
中实现的接口。此外,我有更具体的怪物(如 Dragon
或 Beast
),我在它们自己的 class 中定义了每个怪物。他们每个人都扩展了 Monster
class.
现在我想根据 tile.get_content()
编辑的对象 return 的类型执行不同的代码。例如,如果它是从 Monster
class myFunction1()
继承的任何对象被调用,如果它是任何扩展 Item
class myFunction2()
被调用。
我将如何实现这种行为?
提前谢谢你。
编辑:
我发现 if (Type.typeof(tile.get_content()) == Monster)
似乎是可行的方法,但是 return 对于继承自 Monster
class 的类型是否也是如此,或者仅适用于泛型的对象 class Monster
?
有两个:
if (tile.get_content() is Monster)
//and
if (Std.isOfType(tile.get_content(), Monster))
按照 George 的建议,应该使用 Std.isOfType()
。
从编辑中回答我自己的第二个问题:确实 return true
继承自 classes 的对象指定 class.
因此,我的具体示例的完整代码是
if (Std.isOfType(tile.get_content(), Monster)) {
myFunction1();
} else if (Std.isOfType(tile.get_content(), Item)) {
myFunction2();
}
简单地说:我正在寻找 Java 的 instanceof
.
这是我的具体问题:
我有一个 class Tile
,它包含一个类型为 Unit
的字段 content
和一个函数 get_content()
return当前存储的对象。 Unit
是在 3 classes Player
、Monster
和 Item
中实现的接口。此外,我有更具体的怪物(如 Dragon
或 Beast
),我在它们自己的 class 中定义了每个怪物。他们每个人都扩展了 Monster
class.
现在我想根据 tile.get_content()
编辑的对象 return 的类型执行不同的代码。例如,如果它是从 Monster
class myFunction1()
继承的任何对象被调用,如果它是任何扩展 Item
class myFunction2()
被调用。
我将如何实现这种行为?
提前谢谢你。
编辑:
我发现 if (Type.typeof(tile.get_content()) == Monster)
似乎是可行的方法,但是 return 对于继承自 Monster
class 的类型是否也是如此,或者仅适用于泛型的对象 class Monster
?
有两个:
if (tile.get_content() is Monster)
//and
if (Std.isOfType(tile.get_content(), Monster))
按照 George 的建议,应该使用 Std.isOfType()
。
从编辑中回答我自己的第二个问题:确实 return true
继承自 classes 的对象指定 class.
因此,我的具体示例的完整代码是
if (Std.isOfType(tile.get_content(), Monster)) {
myFunction1();
} else if (Std.isOfType(tile.get_content(), Item)) {
myFunction2();
}