风天小畜 发表于 2009-3-4 19:36:12

global 变量下,clear / clear all 的区别

我分享一个心得,就是存在global变量的情况下,clear 和clear all 的区别。
但看自带 help,似乎没能看出clear 和clear all 的区别(单指清除变量方面的区别)。

实际的一次编程,发现不可预知的错误,追踪发现是clear 的问题。

1.step A
命令窗口,输入 test,再输入 setVal() ,对varAA赋值。
之后,查看 workspace ,全局变量 varAA值变成了0.485


2.step B
然后,我clear 命令,清除内存。
查看 workspace,果然为空,没有变量了。


3.step C
再输入 test,
查看 workspace ,全局变量 varAA值还是0.485。
可是,这次,我并没有调用setVal()函数,来对varAA赋值。
而且,之前还clear了内存的。

-----------------------------
如果把 clear 换成 clear all。则step C 发现,varAA的值可以正常地消失。


----对于clear 和clear all 的区别,其自带的help 是这么说的。
clear
clear removes all variables from the workspace. This frees up system memory.

clear keyword clears the items indicated by keyword.
clearall      
Removes all variables, functions, and MEX-files from memory, leaving the workspace empty. Using clear all removes debugging breakpoints in M-files and reinitializes persistent variables, since the breakpoints for a function and persistent variables are cleared whenever the M-file is changed or cleared. When issued from the Command Window prompt, also removes the Java packages import list.



----------------------
脚本test.m

clear ;
global varAA;
varAA




函数
setVal.m
function setVal()
global varAA;
varAA=rand();
varAA
页: [1]
查看完整版本: global 变量下,clear / clear all 的区别