У меня есть массив ячеек Matlab
объектов, что-то вроде:испытаний существование на объектах
objs = {Object1(), Object2(), Object3()};
Эти объекты являются все различные типы. У некоторых из них будет метод, назовем его myMethod()
. Я хочу сделать что-то вроде:
for o = objs
if hasMethod(o, 'myMethod()')
o.myMethod();
end
end
и моя трудность заключается в том, что я не знаю, как это сделать hasMethod
- exist
не кажется полезным здесь.
Я мог бы использовать try - catch
, но я предпочел бы сделать что-нибудь опрятное. Есть ли способ сделать это? Должен ли я просто изменить свой дизайн?
Да, это похоже на странную вещь, но если Matlab дает нам разнородные коллекции, было бы стыдно не использовать их: -D. Поскольку этот метод имеет смысл только для некоторых классов, было бы нецелесообразно иметь его в суперклассе.Решение проблемы в правильном способе OO потребовало бы, чтобы я внес изменения в множество классов, чтобы я мог различать те, у кого есть метод и без него. Я бы предпочел использовать хакерский стиль отражения в заявлении :-) – Richante