gpt4 book ai didi

wolfram-mathematica - Mathematica : How to clear the cache for a symbol, 即未设置无模式的 DownValues

转载 作者:行者123 更新时间:2023-12-03 11:35:58 26 4
gpt4 key购买 nike

我是一个糟糕的缓存者:有时,当没有人观看时,我会缓存结果而不包含完整的上下文,如下所示:

f[x_]:=f[x]=x+a;
a=2; f[1];
DownValues[f]

Out[2]= {HoldPattern[f[1]]:>3,HoldPattern[f[x_]]:>(f[x]=x+a)}

这会导致非常微妙的错误,更重要的是,当我更改上下文时需要清除缓存。清除缓存的一种方法是完全 Clear符号并重复定义,但这并不是真正的解决方案。

我真正想要的是一种清除与符号关联的所有无模式 DownValues 的方法。
为清楚起见,我将包括我目前的解决方案作为答案,但如果在两个方面失败
  • 它只清除带有全数字参数的 DownValues
  • 出于美学原因,我想避免使用 Block获取 DownValues。

  • 关于如何改进的任何想法 ClearCache ?

    最佳答案

    我过去做过类似的功能(但我不记得在哪里)。

    以下代码是否满足您的所有需求?

    ClearCache[f_] := DownValues[f] = DeleteCases[DownValues[f], 
    _?(FreeQ[First[#], Pattern] &)]

    这可能应该扩展到 UpValuesSubValues .和 Headf仅限于 Symbol .

    关于wolfram-mathematica - Mathematica : How to clear the cache for a symbol, 即未设置无模式的 DownValues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5086749/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com