我正在学习如何编写MATLAB GUI并使用GUIDE。我很好奇什么是更好的做法:使用MATLAB' set()'用于编辑对象属性的函数,或者只是用于编辑对象属性的点运算符。
比如说我有一个可编辑的文本框。此文本框的标记是' string_fs'。我发现有两种方法可以更改此对象的字符串:
handles.string_fs.String = 'hello';
或
set(handles.string_fs, 'String', 'hello');
一种方法与另一种方法有什么好处吗?
答案 0 :(得分:2)
这主要是个人偏好,除非您需要编写可在MATLAB的HG2之前版本(R2014b之前)中运行的代码,在这种情况下您需要使用set
和get
以保持向后兼容性。
使用set
和get
方法有以下几个优势:
同时操作多个物体
您可以拥有一组对象或句柄,并同时更改所有对象的属性
ax(1) = subplot(1,2,1);
ax(2) = subplot(1,2,2);
% Change the font weight of both axes object to be the same
set(ax, 'FontWeight', 'bold')
% Change the font weight to be different for each
set(ax, {'FontWeight'}, {'bold'; 'normal'})
你可以用点表示法做类似的事情,但我认为它的可读性稍差
[ax.FontWeight] = deal('bold');
同时更改多个属性
您可以在一个声明中更改多个属性的值,我认为这些值可以帮助您提高可读性并保持代码简洁。
set(ax, 'FontSize', 20, 'FontWeight', 'bold', 'FontName', 'arial')
正如@Hoki的评论所指出的,如果要更新相互依赖的属性,这一点尤为重要。例如,修改绘图的XData
和YData
,它们都需要具有相同的大小。
所以这个:
hplot = plot(1, 1);
set(hplot, 'XData', rand(10, 1), 'YData', rand(10, 1))
而不是:
hplot = plot(1, 1);
set(hplot, 'XData', rand(10, 1))
% Plot won't render here
set(hplot, 'YData', rand(10, 1))
% Plot will be able to render
以编程方式获取可能的值
使用点表示法,您可以使用制表符完成来获取可能值的列表;但是,您可以使用set
以编程方式执行此操作,只需提供值即可。
possible = set(axes, 'FontWeight')
% 'normal'
% 'bold'
缩短且不区分大小写的属性
我不建议使用下两个,但set
和get
可以使用它们。
使用set
和get
方法,您不必提供整个属性名称,只需要足够的字母即可。
set(ax, 'FontW', 'bold')
使用set
和get
时,属性名称不区分大小写
set(ax, 'fontweight', 'bold')