From MATLAB docs, full statement:
Code within an eval statement can unexpectedly create or assign to a variable already in the current workspace, overwriting existing data.
What’s an example?
If I define
function fn(); a=1 and call
a suddenly appear in a variable scope other than inside of
fn? Example here (trying to figure out the -1).
I think the problem that the documentation is getting at is this:
function fn() a = 1; eval('a = 2;'); end
In this case, it’s obvious that
a will get overwritten, but it’s easy to imagine more pernicious cases where the result might not be so clear.
evalin can make things worse still.
function fn2() a = 1; subfn2(); disp(a) end function subfn2() evalin('caller', 'a = 2;'); end