Why do we need to use dynamic properties?

7 次查看(过去 30 天)
Why do we need to use dynamic properties? In what situations must we use dynamic properties? What value do they bring? If I must add a property, why not add it within the class instead of adding a dynamic property to the object?
The book I'm reading provides examples of dynamic properties, but I find that they seem to function like regular variables. Furthermore, it seems like this program can achieve its goals without dynamic properties. Please take a look at the code below.
classdef MyButton < dynamicprops
properties
UiHandle
end
methods
function obj = MyButton(pos)
if nargin > 0
if length(pos) == 4
obj.UiHandle = uicontrol('Position',pos,...
'Style','pushbutton');
else
error('Improper position')
end
end
end
end
end
The book instructs to execute the following commands.
hbutton1 = MyButton ([20 40 100 40]);
addprop(hbutton1,'Caption');
hbutton1.Caption='OK';
set(hbutton1.UiHandle,'String',hbutton1.Caption)
However, I found that removing dynamic properties does not affect the outcome.
hbutton1 = MyButton ([20 40 100 40]);
hbutton1.UiHandle.String='OK'
  9 个评论
fa wu
fa wu 2023-9-6
@Stephen23 I feel that you must have appreciated the advantages of dynamic properties. I'm looking forward to you providing a formal answer with example code.
fa wu
fa wu 2023-9-7
@Stephen23 Does this example fit the situation you mentioned? -------“I often create GUIs where objects (uicontrols, axes, etc) get switched between various states (particularly visibility, view, string, etc) depending on other menu/data selections).”

请先登录,再进行评论。

回答(1 个)

Matt J
Matt J 2023-9-6
They are a convenience, not a requirement. From the documentation:
Use dynamic properties to attach temporary data to objects or to assign data that you want to associate with an instance of a class, but not all objects of that class.
  4 个评论
fa wu
fa wu 2023-9-6
Why doubt it--------I don't doubt, I don't undstand.
"Use dynamic properties to attach temporary data to objects or to assign data that you want to associate with an instance of a class, but not all objects of that class."--------It tell me How,don't tell me Why.
Matt J
Matt J 2023-9-6
Well, like I said, it's just so that you can attach data to an object without cluttering the classdef with additional properties that you're only going to use for one application. I don't think there's any more to it than that.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Software Development Tools 的更多信息

产品


版本

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by