MATLAB GUI回调和函数变量范围

时间:2015-06-16 16:41:42

标签: matlab matlab-guide

我认为我对范围有一个基本的了解,但我对如何在MATLAB GUI中工作感到困惑。

例如,如果我有一个基于editBox1的输入在轴上进行冲浪图的GUI,我会:

updateAxes函数,它将使用editBox1的输入更新轴(str2double(get(handles.editBox1,' String')))。

将调用updateAxes函数的editBox1回调。

是否违反了updateAxes范围的想法直接使用get函数?我应该将editBox1的内容作为updateAxes的参数传递吗?

1 个答案:

答案 0 :(得分:0)

考虑一下你真正需要的东西是好的,而不是传递所有数据。不过,在我看来,句柄是可以传递的东西。您还应该认为即使手柄没有被传递,您仍然可以访问它们。数字本质上是全局的,因为任何数字(以及数字属性)都可以通过任何函数访问。通过不绕过手柄可以使访问数字变得更加困难,但无法阻止访问。如果您想要修改一个图形,我可以看到没有理由不将图形传递给图形,或者图形中所有对象的句柄。第二个选项可以让你不必搜索(递归)Child列表,如果你发现你需要另一个句柄来同一个数字。如评论中所述,GUI matlab有一种通过函数guidata处理此问题的简单方法。另外,考虑可维护性。用一组选定的句柄维护代码,正确命名或排序,或者你宁愿通过一组无名的子句访问它们会更容易吗?