pkg_default(P;K;D)
Returns a value from a package at a given key position, or returns a default value if the value is invalid. (Available as of version 15.03)
Syntax
pkg_default(P;K;D)
Input
| Argument | Type | Description |
|---|---|---|
P |
any | The name of a package variable |
K |
any | The name of a key |
D |
any | If P does not contain the key K
or its value does not have the same type as D, it will
return the value in D. |
Return Value
Returns a single value from a package at position K. The return type will always
match that of the default value (D).
If P is N/A, an error is returned.
If the value at position K is N/A, the default (D) is
returned.
If the value at position K is of a different type than
D, the default (D) is returned.
If the value at position K is a charvec/cstring while
D is a symbol (or vice versa),
pkg_default(P;K;D) returns the value at position
K, but it will convert the value to match the value in
D.
Sample Usage
value="{pkg_default(@package;'keyN';'default')}"returns the value
located at keyN in list-value @package. If there
is no value at keyN or if the type of keyN is
different from the type of default, the function returns
default.Example
The following example shows how dejson(string;) converts a "mixed"
JSON string into package of name-value pairs that 1010data can use, and then
pkg_default(P;K;D) returns a scalar value located at key
position K in package P.
<base table="default.test.json"/>
<colord cols="mixed"/>
<willbe name="p" value="dejson(mixed;'symbols')"/>
<willbe name="a" value="pkg_default(p;'a';98.6)"/>
<willbe name="c" value="pkg_default(p;'c';'noun')"/>
The resulting table is as follows:

In column p, dejson(string;) converts the
mixed JSON into a package of name-value pairs. Column a
contains the value of a, and column c
contains the value of c. In the third row of the table, the data
type for c does not match the default, so the default value,
noun, is used. The last row of the table does not
contain an a or c value at all, so the
a and c columns contain the
default values 98.6 and
noun, respectively.
