【发布时间】:2012-04-08 16:30:11
【问题描述】:
在 Matlab 上,当我使用“for...end”循环时,在循环完全执行后,索引变量仍然存在于我的工作区中。我希望它被自动删除,因为它在循环之外不再相关并且会污染工作空间。
例如,在下面的代码中,变量“i”在循环执行后仍然存在。因为它应该是一个局部变量,所以我希望它自动删除,而无需我明确地这样做。
List = [1 2 3 4] ;
for i = List
fprintf('value = %i\n', i) ;
end
% "i" still exists, while its outside of its context
clear i; % I would like to avoid doing this everytime I exit a for..end
我知道这更像是一个美学问题而不是一个错误,但为了更容易理解我的程序的结果,我希望这些“临时”变量在我退出它们的上下文时消失。
到目前为止,我只能通过重用这些临时变量来减少它们的数量。
编辑:
似乎没有真正的解决方案可以自动删除那些“临时”变量。 避免这些变量的最接近的方法是:
避免循环
在函数中创建循环,函数的变量是本地的,不会进入工作区。
【问题讨论】:
-
无关:我建议使用
ii作为索引变量以避免破坏i(虚数单位)。 -
@nibot: +1,即使你也可以养成将虚数单位写成
1i的习惯(注意缺少的空格),如果你使用它比循环变量少得多.. . -
是的,没错;我最近才知道 1i。