我认为我对范围有一个基本的了解,但我对如何在MATLAB GUI中工作感到困惑。
例如,如果我有一个基于editBox1的输入在轴上进行冲浪图的GUI,我会:
updateAxes函数,它将使用editBox1的输入更新轴(str2double(get(handles.editBox1,' String')))。
将调用updateAxes函数的editBox1回调。
是否违反了updateAxes范围的想法直接使用get函数?我应该将editBox1的内容作为updateAxes的参数传递吗?
答案 0 :(得分:0)
考虑一下你真正需要的东西是好的,而不是传递所有数据。不过,在我看来,句柄是可以传递的东西。您还应该认为即使手柄没有被传递,您仍然可以访问它们。数字本质上是全局的,因为任何数字(以及数字属性)都可以通过任何函数访问。通过不绕过手柄可以使访问数字变得更加困难,但无法阻止访问。如果您想要修改一个图形,我可以看到没有理由不将图形传递给图形,或者图形中所有对象的句柄。第二个选项可以让你不必搜索(递归)Child列表,如果你发现你需要另一个句柄来同一个数字。如评论中所述,GUI matlab有一种通过函数guidata
处理此问题的简单方法。另外,考虑可维护性。用一组选定的句柄维护代码,正确命名或排序,或者你宁愿通过一组无名的子句访问它们会更容易吗?