How do I write a common set method for multiple properties
    13 次查看(过去 30 天)
  
       显示 更早的评论
    
I work within a project which has several classes which define properties that use essentially the same  set method. To make the code more readable, I want to implement a  commonsetter method. The overall goal is to include this commonsetter method in the superclass, so that all the classes could use it. Here is a minimum example:
classdef MyClass
	properties
		A
		B
	end
	methods
		function mc = MyClass(a,b) % Constructor
			mc.A = a;
			mc.B = b;
		end
		function mc = set.A(mc, value) % setter for A
			mc = mc.commonSetter(value, 'A');
		end
		function mc = set.B(mc, value) % setter for B
			mc = mc.commonSetter(value, 'B');
		end
	end
	methods(Access = protected)
		function mc = commonSetter(mc, value, property)
			% do some stuff
			disp('Made it into the commonSetter!')
			mc.(property) = value;
		end
	end
end
% tested with MyClass(1,2)
Unfortunatelly, I get following error: Maximum recursion limit of 500 reached. 
My questions would be: Is there a way to use the commonsetter function for variables A and B? And what do I have to change if I want to  include this commonsetter method in the superclass?
3 个评论
  per isakson
      
      
 2021-4-1
				My comment was definately not meant as an answer. That's why I posted it as a comment. 
回答(1 个)
另请参阅
类别
				在 Help Center 和 File Exchange 中查找有关 Customize Object Indexing 的更多信息
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!