我声明了一些包含简单行向量的变量,这些行向量表示另一个函数的输入参数。在循环中,应使用这些变量,并将结果分配给结构。
现在,我的问题是如何最好地访问预定义变量的内容。我找到了使用eval
的解决方案。但是,我经常读到应该避免使用eval
。显然,这不是最佳做法。那么,我的问题的最佳实践是什么?
varABC = [1,2,3];
varDEF = [4,5,6];
varGHI = [7,8,9];
names = {'ABC','DEF','GHI'};
result = {'result1','result2','result3'};
for i = 1 : 3
varString = strcat('var',names{i});
test.(result{i}) = sum(eval(varString));
end
答案 0 :(得分:2)
我建议稍微重写一下代码
names = {'ABC','DEF','GHI'};
result = {'result1','result2','result3'};
选项1
% Use struct instead of a simple variable
var.ABC = [1,2,3];
var.DEF = [4,5,6];
var.GHI = [7,8,9];
for i = 1 : 3
test.(result{i}) = sum(var.(names{i}));
end
选项2
% Use dictionary
c = containers.Map;
c('ABC') = [1,2,3];
c('DEF') = [4,5,6];
c('GHI') = [7,8,9];
for i = 1 : 3
test.(result{i}) = sum(c(names{i}));
end