Не уверен, что это хороший совет, но:
f[m_] :=
Module[{iter}, getIter[] := iter;
Table[{iter, iter^2}, {iter, 1, m}]];
А потом:
Dynamic[getIter[]]
f[500000];
РЕДАКТИРОВАТЬ
Это будетлучше, но несколько более непонятно:
ClearAll[f];
SetAttributes[f, HoldRest];
f[m_, monitorSymbol_: monitor] :=
Block[{monitorSymbol},
Module[{iter},
monitorSymbol := iter;
Table[{iter, iter^2}, {iter, 1, m}]]
];
Здесь вы назначаете определенный символ для контроля состояния вашей локализованной переменной.Используя Block
, вы гарантируете, что ваш символ не получит никакого глобального значения в конце (точнее, его глобальное значение не будет изменено в конце - вы также можете использовать символ, который имеет некоторое глобальное значение, если вытак хочется)Символ по умолчанию - monitor
, но вы можете изменить его.Вот как вы его используете:
Dynamic[monitor]
f[500000];
Это предложение несколько лучше, чем первое, более простое, поскольку, используя Block
, вы гарантируете, что после завершения функции не произойдет никаких изменений глобального состояния.