PersistentSymbol
PersistentSymbol["name"]
represents the persistent symbol associated with the key "name".
PersistentSymbol["name",loc]
represents the persistent symbol associated with name stored in persistence location loc.
PersistentSymbol["name",{loc1,…}]
represents the persistent symbol associated with name at the first of the locations loci at which it occurs.
Details and Options
- PersistentSymbol["name",…] evaluates to give the corresponding persistent value.
- PersistentSymbol["name",…]=value sets a persistent value.
- PersistentSymbol allows the following options:
-
MergingFunction Automatic the function applied to the list of values found ValuePreprocessingFunction Identity the function applied to new values to be assigned ExpirationDate None when the value should expire PersistenceTime None how long the value should persist - In PersistentSymbol["name",loc], possible forms for the persistence location loc include:
-
PersistenceLocation["type"] "Local", "Cloud", "FrontEndSession", etc. locations "type" equivalent to PersistenceLocation["type"] PersistenceLocation["type","base"] location with a particular base (directory etc.) "type""base" equivalent to PersistenceLocation["type","base"] - Supported location types include:
-
"KernelSession" current invocation of the Wolfram Language kernel "FrontEndSession" current invocation of the Wolfram Notebook front end "Notebook" the notebook in which the current evaluation is being done "Local" local to a computer, based on user home directory "LocalShared" local to a computer, based on $BaseDirectory "Cloud" in the cloud defined by the current $CloudBase "Installation" installation defaults - PersistentSymbol["name"] is equivalent to PersistentSymbol["name",$PersistencePath].
- PersistentSymbol["name"]=value is equivalent to PersistentSymbol["name",$PersistenceBase]=value.
- PersistentSymbol["name",loc] is essentially PersistentObject["name",loc]["Value"].
- When a single persistence location is specified, as in PersistentSymbol["name",loc,…], the setting for MergingFunction is not used.
- Otherwise, with the setting MergingFunction->f, the final value returned is the result of applying the function f to the list of values found at all persistence locations.
- Unless specified otherwise by "MergingFunction" metadata in the PersistentObject, MergingFunction->Automatic is equivalent to MergingFunction->First.
- Before a new value is assigned in PersistentSymbol[sym]=value, any specified value preprocessing function is applied to value before the value is assigned.
- If the preprocessing function returns $Failed, the assignment is not performed.
- If no explicit setting for ValuePreprocessingFunction is given, the setting to use is looked up on $PersistencePath.
- An expired persistent symbol is treated as nonexistent, and the underlying persistent object may be removed.
- Persistent symbols can be removed with Remove. Remove[PersistentSymbol["name"]] is equivalent to Remove[PersistentSymbol["name",$PersistenceBase]].
Examples
open allclose allBasic Examples (3)
Retrieve a previously saved value:
Remember a value with front end session scope:
Use the saved value, even in a newly restarted kernel within the same front end session:
Store values for the same name at different persistence locations:
Retrieve the first value found:
Retrieve the list of all values on $PersistencePath:
Scope (8)
Persistence Locations (3)
Persistent symbols created in the "KernelSession" location disappear when the kernel quits:
Persistent symbols created in the "FrontEndSession" location survive a kernel restart:
These symbols disappear when the front end is restarted:
Persistent symbols in the "Local" location are stored in a file in your account:
These symbols are stored under the $LocalBase directory and remain indefinitely:
Options (8)
ExpirationDate (2)
MergingFunction (3)
Create a complement of persistent values with key "lval" at various locations:
List all existing values for the key "lval" on $PersistencePath:
By default, only the first value is returned:
Join and flatten all sublists:
Create a complement of persistent associations with name "aval" at various locations:
List all existing values on $PersistencePath:
Merge the values of identical keys in the associations:
Define a default value for "mylist" with a custom merging function:
Define additional values at different persistence locations:
For looking up values, the custom merging function is now used:
PersistenceTime (2)
ValuePreprocessingFunction (1)
Properties & Relations (5)
Persistent values are stored in persistent objects:
The default location of a new persistent object is given by $PersistenceBase:
Create a complement of persistent values with key "v" at various locations:
Persistent values are by default searched on all locations given in $PersistencePath:
The first value found is returned:
With MergingFunction->Identity, all values found are returned in a list:
Specify an explicit list of locations to search for values:
Expiration times specified with PersistenceTime are converted to absolute expiration dates:
Persistent values can be removed with Remove:
Possible Issues (1)
Create two persistent values for "name" in different locations:
Remove by default removes only the value in the location given by $PersistenceBase:
Remove all values that might exist anywhere in the locations given by $PersistencePath:
Text
Wolfram Research (2021), PersistentSymbol, Wolfram Language function, https://reference.wolfram.com/language/ref/PersistentSymbol.html.
CMS
Wolfram Language. 2021. "PersistentSymbol." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/PersistentSymbol.html.
APA
Wolfram Language. (2021). PersistentSymbol. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/PersistentSymbol.html