MATLAB: Using builtin assignment for classes that overload the assignment operator ‘=’

=assignbuil inoopoverloadset method

Hi,
I'm trying to find out if it is possible to recover the functionality of '=' for properties in a class that have their own set method.
For instance, this piece of code:
classdef myClass < hgsetget
properties
myProperty
end
methods
function set.myProperty(obj,value)
mySetFunction(obj,value);
end
function mySetFunction(obj,value)
obj.myProperty = value;
end
end
end
generates a recursion error if we try to set the property myProperty by any value.
Is there a way to avoid this effect? If there were a builtin function that represents the effect of the "=" I could use it inside mySetFunction, but I do not know if this is possible.
In other words, I know that inside the set.myProperty function, a command
obj.myProperty = value;
would call the builtin function corresponding to "=", but I do not know how to force this behaviour explicitely in any function that is not a set.<property>
Best, Daniel

Best Answer

You are correct, your code does throw an error about recursion limits. However, I believe the operator you are interested in overloading is the subscripted assignment operator, "subsasgn". This will allow you to do:
obj.myProperty = value;
and call you own set function without receiving an error about the recursion limit. Here is what the class definition would look like:
classdef myClass < hgsetget
properties
myProperty
end
methods
function mySetFunction(obj,value)
obj.myProperty = value;
end
function a = subsasgn(a,s,b)
if strcmp(s.subs,'myProperty')
mySetFunction(a,b);
end
end
end
end