我花了相当多的时间来清理旧的MATLAB代码 - 这个函数试图禁用Java和uicomponent句柄,它们是某个对象的属性 - 关于如何更好地编写这个函数的任何想法?感谢
function disable(obj)
all_props = properties(obj);
for ii = 1:size(all_props, 1)
try
set(obj.(all_props{ii}), 'Enabled', 0)
end
try
set(obj.(all_props{ii}), 'Enable', 'Off')
end
end
end
答案 0 :(得分:2)
这一切看起来都很好,我个人将迭代器变量'ii'重命名为更文字的东西(即iProperty),在循环开始时,我会把类似
的东西重命名property = obj.(all_props{iProperty});
以避免之后重复的代码(如果你的对象允许这样做)。
而不是'size(all_props,1)'你也可以使用'numel(all_props)'。在这种情况下(使用一维数组)结果是相同的,如果你问我它看起来更干净。
如果您希望您的代码更精简,重复次数更少:您可以在某些数组/结构中始终将“启用”和“启用”与0和“关闭”一起存储,并迭代这些值。它有其优点(很容易扩展到其他字段名称(例如'Disabled'= 1),更少的代码重复(try-end))但也有缺点(额外的循环,额外的变量,......)。