MATLAB GUI 回调和函数变量范围

MATLAB GUI callbacks and function variable scope

我想我对作用域有基本的了解,但我对它在 MATLAB GUI 中的工作方式有点困惑。

例如,如果我有一个 GUI 可以根据 editBox1 的输入在轴上绘制冲浪图,我会:

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

调用 updateAxes 函数的 editBox1 回调。

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

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