"Value" (数据结构)
-
参见
- 函 数
- Set
- CreateDataStructure
- DataStructure
-
- 数据结构
- Counter
- 相关指南
-
-
参见
- 函 数
- Set
- CreateDataStructure
- DataStructure
-
- 数据结构
- Counter
- 相关指南
-
参见
"Value" (数据结构)
"Value"
表示一个可变的表达式的值.
更多信息
- 可以在程序的任意部分修改可变的值:
-
CreateDataStructure["Value",x] 创建新的初始值为 x 的 "Value" Typed[x,"Value"] 指定 x 的类型为 "Value" - 对于类型为 "Value" 的数据结构,可进行以下操作:
-
ds["Copy"] 返回 ds 的副本 时间:O(1) ds["Get"] 获取存储在 ds 中的值 时间:O(1) ds["Set",x] 将 ds 的值设为 x 时间:O(1) ds["Visualization"] 返回 ds 的可视化 时间:O(1) - 还支持以下函数:
-
dsi===dsj 如果 dsi 等于 dsj 则为 True FullForm[ds] ds 的完全形式 Information[ds] 关于 ds 的信息 InputForm[ds] ds 的输入形式 Normal[ds] 将 ds 转换成普通表达式
范例
打开所有单元 关闭所有单元基本范例 (1)
可用 CreateDataStructure 创建新的 "Value":
ds = CreateDataStructure["Value", f[1]]ds["Get"]ds["Set", f[2]]ds["Get"]Normal[ds]ds["Visualization"]范围 (6)
可变性 (1)
"Value" 数据结构是可变的,因此其值可以被更改:
ds = CreateDataStructure["Value", f[x]]ds["Set", g[y]]ds["Get"]ds["Set", h[z]]ds["Get"]信息 (1)
可用 CreateDataStructure 创建新的 "Value":
ds = CreateDataStructure["Value", f[1]]Information[ds]操作 (4)
"Copy" (1)
创建一个带有初始值的新的 "Value":
ds = CreateDataStructure["Value", f[x]]ds1 = ds["Copy"]{Normal[ds], Normal[ds1]}ds1["Set", g[x]];
{Normal[ds], Normal[ds1]}"Get" (1)
创建一个带有初始值的新的 "Value":
ds = CreateDataStructure["Value", f[x]]ds["Get"]"Set" (1)
创建一个带有初始值的新的 "Value":
ds = CreateDataStructure["Value", f[x]]ds["Set", g[x]]ds["Get"]"Visualization" (1)
创建一个带有初始值的新的 "Value":
ds = CreateDataStructure["Value", f[x]]ds["Visualization"]应用 (1)
表达式的就地更新 (1)
定义一个函数,用于更新作为参数传递的 "Value":
accumulate[f_, val_] /; DataStructureQ[val, "Value"] := val["Set", f[val["Get"]]];创建一个持有初始表达式的 "Value":
v = CreateDataStructure["Value", x]accumulate[# ^ 2&, v];
accumulate[# + 1&, v];v["Get"]属性和关系 (4)
InputForm (1)
Normal (1)
SameQ (1)
巧妙范例 (1)
使用显式缓存的记忆化计算 (1)
使用 "Value" 来实现一个可手动控制、可重置或复制的缓存:
cache = CreateDataStructure["Value", <||>]cachedEval[f_, x_] :=
With[{c = cache["Get"]},
If[KeyExistsQ[c, x],
c[x]
,
cache["Set", Append[c, x -> f[x]]][x]
]
]cachedEval[# ^ 2&, 10];
cachedEval[# ^ 2&, 11];cache["Get"]历史
2020年引入 (12.1)