I have a class defintion which makes use of OOP dynamicprops and I've noticed some odd behaivor in accessing the properties.
classdef myClass < dynamicprops properties x end methods function this = myClass(x) this.x = x; end end end
If I add new properties to the class in a script which looks something like this
clear all clear classes hObj = myClass(10); hObj.addprop('a'); hObj.addprop('b'); hObj.addprop('c'); hObj.addprop('d'); hObj.addprop('e'); fn = fieldnames(hObj)'
I was expecting the properties to be added to hObj in the same order that they are scripted in, but I find that the properties added to hObj do not get added in any consistent way. EVERY TIME I run the script, hObj is returned with a different order in the properties ?! Can anyone explain why these dynamic properties behave in such a stranage way? Is there no way to control the order in which these properties appear in the object?
It would be nice if I could control the order so that a function call like fieldnames(hObj) would return values in a predictable way. As a secondary but also irksome issue there appears to be no way to REMOVE a dynamic property once it has been added?!
… here is the output from 5 runs of the script I show above in R2010b:
fn = 'x' 'b' 'a' 'c' 'd' 'e'fn = 'x' 'd' 'e' 'a' 'c' 'b'fn = 'x' 'd' 'a' 'b' 'e' 'c'fn = 'x' 'b' 'd' 'a' 'c' 'e'fn = 'x' 'b' 'a' 'd' 'c' 'e'
Best Answer