目录
嵌套函数和匿名函数中的变量
嵌套函数和匿名函数的作用域规则要求在函数内使用的所有变量都存在于代码文本中。
如果尝试向匿名函数、嵌套函数或包含嵌套函数的函数的工作区中动态添加变量,MATLAB® 将引发以下形式的错误
Attempt to add variable to a static workspace.
下表介绍了尝试动态赋值的典型运算以及推荐的避免动态赋值的方法。
运算类型 | 避免动态赋值的最佳做法 |
---|---|
load | 指定变量名称作为load函数的输入。或者,对从load函数到结构体数组的输出赋值。 |
eval、evalin 或 assignin | 如果可能,避免同时使用这些函数。可以参考eval 函数的替代方法。 |
调用 MATLAB 脚本创建变量 | 将脚本转换为函数并使用参数传递变量。这种方法还阐明了相应代码。 |
向 MATLAB 调试器中的变量赋值 | 在基础工作区中对变量赋值,例如 |
避免动态赋值的另一种方法是显式声明函数内的变量。例如,假定名称为 makeX.m 的脚本向变量 X 赋值。使用函数调用 makeX 并显式声明 X 可避免动态赋值错误,因为 X 位于函数工作区内。常用的变量声明方法是将变量值初始化为一个空数组:
function noerror
X = [];
nestedfx
function nestedfx
makeX
end
end