我有一个嵌套函数,它调用一个基本包含一些常量和字符串定义的脚本。我需要将这些变量传递给基础工作区。我知道我可以将它们定义为global
,这应该不是最佳解决方案,是吗?
传统方式,在我的情况下使用函数的输出参数似乎太复杂了。 (它实际上只是一次性调用,所以我不想破坏我的代码)所以我考虑使用assignin
和who
,但它似乎既不适用于单元格数组也不适用于逗号分开的名单。可能我只是缺少一些语法改进。
function myFunction()
myScriptWithDefinitions;
% who returns a cell array with all variables from my script
temp = who;
% now I try to assign these variables to my base workspace
% these are my attempts, none of them working
assignin('base',who);
assignin('base',temp{:});
assignin('base',{temp{:}});
...
end
我知道我真的需要传递两者,名单和值列表。 还有什么想法?
编辑:类似
assignin('base',{'A','B'},{2,5})
% or
assignin('base',{'A',2},{'B',5})
不起作用,所以我猜assignin
一般不是一种选择。
答案 0 :(得分:2)
使用assignin,您只能一次分配1个变量。
使用“who”获取字符串的单元格数组,其中包含变量的名称。现在,如果你有这个清单:
myVarList=who;
您可以循环并将变量分配给工作区:
myVarList=who;
for indVar = 1:length(myVarList)
assignin('base',myVarList{indVar},eval(myVarList{indVar}))
end
注意:这是一个eval-solution ...如果有人知道快速替换它,请告诉我:))