У меня есть метод (в Haxe), который должен принимать любой объект, который имеет свойства 'width' и 'height'. Я предполагаю, что я могу сделать это как-то с помощью интерфейса, но для моих целей передаваемый объект не должен реализовывать интерфейс, он просто должен быть любым объектом с шириной и высотой свойство.
Это не работает, поскольку объект, который вы передаете, должен реализовать интерфейс:
Interface IWidthAndHeight{
public var width : Float;
public var height : Float;
}
Class Main{
var o : IWidthAndHeight;
public function setObject( o : IWidthAndHeight ){
this.o = o;
}
}
В настоящее время я использую Dynami c и вручную проверяю, существуют ли свойства, но есть ли умнее? Текущий метод:
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 :)
}
Любая помощь приветствуется. Спасибо!