【发布时间】:2018-03-14 20:48:40
【问题描述】:
我有一段代码需要在不同时间运行嵌套循环的组合;但是,每次嵌套循环中的操作都是不同的。有没有办法使外部部分(循环组合)以某种方式成为功能部件,以便内部操作是可变的。例如,下面显示了两个代码块,它们都使用相同的循环介绍,但用途不同。根据 DRY 的原理,我该如何改进这一点,以免每次需要使用类似的循环时都需要重复自己?
% BLOCK 1
for a = 0:max(aVec)
for p = find(aVec'==a)
iDval = iDauVec{p};
switch numel(iDval)
case 2
r = rEqVec(iDval);
qVec(iDval(1)) = qVec(p) * (r(2)^0.5 / (r(1)^0.5 + r(2)^0.5));
qVec(iDval(2)) = qVec(p) - qVec(iDval(1));
case 1
qVec(iDval) = qVec(p);
end
end
end
% BLOCK 2
for gen = 0:max(genVec)-1
for p = find(genVec'==gen)
iDval = iDauVec{p};
QinitVec(iDval) = QinitVec(p)/numel(iDval);
end
end
【问题讨论】: