How do you reset a persistent variable?

The documentaiton says that a persistent variable is reset when the function is cleared from memory. Why then do I not see the persistent variable update in the following?
fun(10)
y = 10
clear fun
fun(12)
y = 10
function fun(x)
persistent y
if isempty(y)
y=x;
end
y,
end

5 件のコメント

dpb
dpb 2022 年 1 月 14 日
Is function fun in its own m-file?
What does
which -all fun
return? Is there an aliased version perhaps?
Does rehash after the clear command make any difference?
I neither of the first two is the cause, then it would seem a bug. Which release?
I was/am in the middle of a debug session so didn't want to 'spearmint...
Matt J
Matt J 2022 年 1 月 14 日
All code shown is in a single mfile. fun() is a local function.
dpb
dpb 2022 年 1 月 14 日
編集済み: dpb 2022 年 1 月 14 日
That's the problem...from the doc for clear the input description includes--
"Names of variables, scripts, functions, or MEX-functions to clear, specified as one or more character vectors or string scalars.
If name is a:
Function, then clear reinitializes any persistent variables in the function. Specifying a local or nested function is not supported. (emphasis added --dpb)
..."
Put fun in its own m-file and then retest.
Matt J
Matt J 2022 年 1 月 14 日
Yep. Always read the fine print, I guess.
dpb
dpb 2022 年 1 月 14 日
If you don't want to make fun an externally-visible function, then you'll have to have a flag variable and call the function with it to reset the persistent variable within the local function.
I have a bunch of short functions that set local working directories, etc., for specific workflows that use persistent variables to retain prior working directory and other key pieces on an 'EXIT' function...one of the pieces of those is the ability to reset those on demand. I hadn't thought of using clear for that purpose, though, with them as a shorthand invocation path.

サインインしてコメントする。

 採用された回答

Matt J
Matt J 2022 年 1 月 14 日

0 投票

dpb 's answer resolved it..

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeFile Operations についてさらに検索

質問済み:

2022 年 1 月 14 日

コメント済み:

dpb
2022 年 1 月 14 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by