【发布时间】:2015-06-17 14:16:56
【问题描述】:
我想我对范围有基本的了解,但我对它在 MATLAB GUI 中的工作方式有点困惑。
例如,如果我有一个 GUI,它根据来自 editBox1 的输入在轴上绘制冲浪图,我会:
一个 updateAxes 函数,它将使用来自 editBox1 的输入更新轴 (str2double(get(handles.editBox1, 'String')))。
将调用 updateAxes 函数的 editBox1 回调。
updateAxes直接使用get函数是否违反了作用域的思想?我应该将 editBox1 的内容作为参数传递给 updateAxes 吗?
【问题讨论】:
-
你为什么要为此烦恼,又为什么要人为地限制自己?您是否认为您的代码不会被其他人理解,或者您害怕破坏某些东西?
-
我觉得我不应该向我的函数传递那么多参数,但同时我一直认为函数应该只接收它需要的参数。传入“句柄”使函数可以访问很多东西,几乎感觉像是在作弊。
-
如果你不传递
handles,那将是一个 PITA 之后更新它。另外,我认为如果您不应该传递handles并对其进行修改,那么您几乎永远不需要guidata。顺便说一句,我认为这种哲学问题更适合Software Engineering。 -
谢谢!下次我会在那里发帖。直到现在才知道它的存在。
-
虽然我认为只访问你需要的东西的原则是一个很好的原则,但同时我必须同意@Dev-iL。如果您不将
handles传递给您的函数,那么如果您想修改某些内容,那么您的生活将变得非常困难,而不是长期。此外,您只是将handles的副本传递给您的函数。您将能够修改那里引用的 GUI 对象,例如绘图,但即使您更改handles中的变量的值,除非您将其从函数传回,否则它不会反映在您的人中。跨度>
标签: matlab matlab-guide