"Value" (データ構造)
"Value" (データ構造)
"Value"
可変式の値を表す.
詳細
- 可変値は,プログラムの任意部分で修正できる.
-
CreateDataStructure["Value",x] 指定の初期値 x で新しい空の"Value"を作成する Typed[x,"Value"] x に"Value"型を与える - "Value"型のデータ構造には,以下の演算が使える.
-
ds["Copy"] ds のコピーを返す time: O(1) ds["Get"] ds に保存された値を得る time: O(1) ds["Set",x] ds の値を x に設定する time: O(1) ds["Visualization"] ds の可視化を返す time: O(1) - 以下の関数もサポートする.
-
dsi===dsj dsi が dsj に等しい場合はTrue FullForm[ds] ds の完全形 Information[ds] ds についての情報 InputForm[ds] ds の入力形 Normal[ds] ds を通常の式に変換する
例題
すべて開く すべて閉じる例 (1)
新しい"Value"は,CreateDataStructureを使って作成できる:
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)
新しい"Value"は,CreateDataStructureを使って作成することができる:
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)