我有一个奇怪的错误。以下是我的问题的最小,完整和可验证的示例:
if (page.ios) {
frameModule.topmost().ios.navBarVisibility = "always";
page.ios.title = "Test Application";
var controller = frameModule.topmost().ios.controller;
var navBar = controller.navigationBar;
navBar.barTintColor = UIColor.redColor();
navBar.navigationBarHidden = false;
navBar.barStyle = UIBarStyle.UIBarStyleBlackTranslucent;
}
首先,我声明以字母ba = 1;
bb = 2;
bc = 3;
whos
% Get variable names
varnames = who('b*')
% Definition of the filename
filename = 'bVariables';
cellfun(@(x) display( x ), varnames);
cellfun(@(x) save( filename, x, '-append' ), varnames);
开头的变量。然后我使用b
命令获取以字母who
开头的变量名称(假设在运行脚本之前我不知道它们)。名称作为字符串的单元格数组(char矢量)返回。
然后我尝试将每个变量单独保存到给定的文件名,并将b
定义为save
使用的匿名函数。
以下是我从上述MCV获得的输出:
cellfun
这很奇怪,因为变量确实存在于工作空间中。
我使用varnames =
'ba'
'bb'
'bc'
x =
ba
x =
bb
x =
bc
Error using save
Variable 'ba' not found.
Error in @(x)save(filename,x,'-append')
错了吗?
是否可能与使用匿名函数和变量的可见性有关?
答案 0 :(得分:3)
似乎是因为匿名函数和变量的范围。我可以使用eval函数重现错误:
ba = 1;
bb = 2;
bc = 3;
whos
% Get variable names
varnames = who('b*')
cellfun(@(x) eval( x ), varnames);
但是你可以这样做:
save(filename,varnames{:})
这将输出单元格的内容作为由保存功能处理的逗号分隔列表。您还可以在末尾添加'-append'
以使其附加到该文件:save(filename,varnames{:},'-append')