PersistentValue

从版本 12.3 开始,PersistentValue 已重新命名为 PersistentSymbol.

PersistentValue["name"]

表示与键 "name" 关联的永久值.

PersistentValue["name",loc]

表示存储在永久位置 loc 且与 name 关联的永久值.

PersistentValue["name",{loc1,}]

表示与出现在第一个位置 loci 上的 name 关联的永久值.

更多信息和选项

  • PersistentValue["name",] 运算给出相应的永久值.
  • PersistentValue["name",]=value 可用于设置永久值.
  • PersistentValue 允许下列选项:
  • MergingFunction Automatic应用于所得到的值列表的函数
    ValuePreprocessingFunction Identity应用于要分配的新值的函数
    ExpirationDate None值何时应该过期
    PersistenceTime None值应该存在多久
  • PersistentValue["name",loc] 中,永久位置 loc 的可能格式包括:
  • PersistenceLocation["type"]"Local""Cloud""FrontEndSession" 等的位置
    "type"等同于 PersistenceLocation["type"]
    PersistenceLocation["type","base"]带有特殊基(目录等)的位置
    "type""base"等同于 PersistenceLocation["type","base"]
  • 支持的位置类型包括:
  • "KernelSession"Wolfram 语言内核的当前调用
    "FrontEndSession"Wolfram 笔记本前端的当前调用
    "Notebook"正在执行当前计算的笔记本
    "ServerSession"在单个网页服务器上请求的持久性
    "CookieManaged"基于 Wolfram 浏览器 cookie 的持久性
    "Local"基于用户主目录的计算机本地
    "LocalShared"基于 $BaseDirectory 的计算机本地
    "Cloud"在由当前 $CloudBase 定义的云端
    "Installation"安装默认值
  • PersistentValue["name"] 等价于 PersistentValue["name",$PersistencePath].
  • PersistentValue["name"]=value 等价于 PersistentValue["name",$PersistenceBase]=value.
  • PersistentValue["name",loc] 实际上是 PersistentObject["name",loc]["Value"].
  • 当指定的是单一永久位置时,如在 PersistentValue["name",loc,] 中,将不使用 MergingFunction 的设置.
  • 在其它情况下,通过设置 MergingFunction->f,返回的最终值是将函数 f 应用于在所有永久位置得到的值列表的结果.
  • 除非是通过在 PersistentObject 中的 "MergingFunction" 元数据指定,否则MergingFunction->Automatic 等价于 MergingFunction->First.
  • PersistentValue[sym]=value 赋新值前,任何指定的预处理函数在复制前应用到 value.
  • 如果预处理函数返回 $Failed,则不会执行赋值.
  • 如果没有给定 ValuePreprocessingFunction 的明确设置,则会在 $PersistencePath 中查找使用的设置.
  • 过期的永久值被视为不存在,并且可以删除底层的永久对象.
  • 可以用 Remove 来清除持久性值. Remove[PersistentValue["name"]] 等价于 Remove[PersistentValue["name",$PersistenceBase]].

范例

打开所有单元关闭所有单元

基本范例  (3)

指定一个永久值:

提取先前保存的值:

记住具有前端会话作用域的值:

使用未保存的值,即使在同一个前端会话内重新启动的内核中:

在不同的永久位置以相同名称存储值:

提取得到的第一个值:

提取在 $PersistencePath 上的所有值的列表:

选项  (8)

MergingFunction  (3)

创建在不同位置上具有键 "lval" 的永久值的补值:

列出在 $PersistencePath 上键 "lval" 的所有存在值:

默认情况下,仅返回第一个值:

连接并展平所有子列表:

连接所有子列表:

创建在不同位置上名称为 "aval" 的永久关联的补值:

列出在 $PersistencePath 上的所有存在值:

合并关联中键相同的值:

定义具有自定义合并函数的 "mylist" 的默认值:

定义不同永久位置上的其它值:

现在使用自定义的合并函数查找值:

PersistenceTime  (2)

定义一个在 5 秒钟后失效的永久值:

在 5 秒后,将不在使用它:

定义一个在 5 天后失效的永久对象:

验证底层永久对象的失效日期:

ExpirationDate  (2)

定义一个在 2020 年初失效的永久值:

验证底层永久对象的失效日期:

定义一个在下年年初失效的永久值:

验证该持久性对象的过期日期:

ValuePreprocessingFunction  (1)

为仅接受整数的特定持久值定义值预处理函数:

为任意持久性位置赋整数值:

赋其他任意值都会生成错误,并且不执行赋值:

应用  (1)

列出键 "lval" 的所有现存的永久对象:

删除它们:

属性和关系  (5)

永久值存储在永久对象中:

新永久对象的默认位置由 $PersistenceBase 给出:

创建键 "v" 在不同位置的永久值的补值:

默认情况下,在由 $PersistencePath 给出的所有位置上搜索永久值:

返回找到的第一个值:

MergingFunction->Identity 时,将把所有得到的值在列表中返回:

明确指定搜索值的位置列表:

通过 PersistenceTime 指定的失效日期被转换为绝对失效日期:

可以用 Remove 来清除持久性值:

可能存在的问题  (1)

为不同位置的 "name" 创建两个持久性值:

默认情况下,Remove 只清除由 $PersistenceBase 给定的位置处的值:

清除 $PersistencePath 给出的位置中可能存在的所有值:

Wolfram Research (2017),PersistentValue,Wolfram 语言函数,https://reference.wolfram.com/language/ref/PersistentValue.html (更新于 2019 年).

文本

Wolfram Research (2017),PersistentValue,Wolfram 语言函数,https://reference.wolfram.com/language/ref/PersistentValue.html (更新于 2019 年).

CMS

Wolfram 语言. 2017. "PersistentValue." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2019. https://reference.wolfram.com/language/ref/PersistentValue.html.

APA

Wolfram 语言. (2017). PersistentValue. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/PersistentValue.html 年

BibTeX

@misc{reference.wolfram_2024_persistentvalue, author="Wolfram Research", title="{PersistentValue}", year="2019", howpublished="\url{https://reference.wolfram.com/language/ref/PersistentValue.html}", note=[Accessed: 05-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_persistentvalue, organization={Wolfram Research}, title={PersistentValue}, year={2019}, url={https://reference.wolfram.com/language/ref/PersistentValue.html}, note=[Accessed: 05-November-2024 ]}