Interface Haxe:与接口匹配的函数参数
我有一个方法(在Haxe中)需要接受任何具有“宽度”和“高度”属性的对象。我假设我可以通过接口以某种方式实现这一点,但出于我的目的,传入的对象不需要实现接口,它只需要是具有宽度和高度属性的任何对象 这不起作用,因为您传入的对象需要实现接口:Interface Haxe:与接口匹配的函数参数,interface,arguments,haxe,Interface,Arguments,Haxe,我有一个方法(在Haxe中)需要接受任何具有“宽度”和“高度”属性的对象。我假设我可以通过接口以某种方式实现这一点,但出于我的目的,传入的对象不需要实现接口,它只需要是具有宽度和高度属性的任何对象 这不起作用,因为您传入的对象需要实现接口: Interface IWidthAndHeight{ public var width : Float; public var height : Float; } Class Main{ var o : IWidthAndHeig
Interface IWidthAndHeight{
public var width : Float;
public var height : Float;
}
Class Main{
var o : IWidthAndHeight;
public function setObject( o : IWidthAndHeight ){
this.o = o;
}
}
目前,我正在使用动态和手动检查属性是否存在,但有更智能的方法吗?现行方法:
Class Main{
var o : Dynamic;
public function setObject( o : Dynamic ){
if (propertiesExist(o,['width','height'])){
this.o = o;
}
}
// Note: propertiesExist is my own method. Just assume it works :)
}
谢谢你的帮助。谢谢 您可以在此处使用:
这只是varo:{width:Float,height:Float}的替代方案代码>带有typedef
。
setObject
参数中的任何类或结构都将在编译时检查这些字段,这称为
typedef WidthAndHeight = {
width:Float,
height:Float
}
class Main {
var o:WidthAndHeight;
public function setObject(o:WidthAndHeight) {
this.o = o;
}
}