【发布时间】:2014-05-13 13:15:47
【问题描述】:
几天前/r/matlab 上的某个人问了我一个非常有趣的问题,与提交给 MATLAB FEX 的Flappy Bird clone 有关。发帖人注意到,如果你打开 .m 主文件,在第一行的调试器中将其停止,然后运行 whos(),你会看到一堆变量,然后才被函数显式定义。
我在编辑器中注意到的第一件事是突出显示嵌套函数的语法。乍一看,whos() 返回的变量似乎只是那些将在基函数范围内的某个点定义的变量。
你可以用一个更简单的例子重新创建它:
function testcode
asdf = 1;
function testing
ghfj = 2;
end
end
如果你在第一行设置断点并运行whos(),你会得到
Name Size Bytes Class Attributes
ans 0x0 0 (unassigned)
asdf 0x0 0 (unassigned)
我似乎在嵌套函数或相关主题的文档中找不到任何解释此行为的内容。我不是计算机科学家,我的编程知识仅限于 MATLAB 和少量 Python。谁能解释发生了什么?和MATLAB在运行时如何编译代码有关系吗?
【问题讨论】:
标签: matlab