辞典
字典是从键到值的映射。我们将语法设计得与JSON非常接近。注意,条目是通过引用给出的(如几何对象)。
基本字典操作
描述:如果没有参数,这将创建一个空字典。
创建简单词典:{“键”:val,…}
描述:表达式{“键1”:val,…}
创建了一个基本字典。
打印词典
描述:一如既往的功能打印
将输出对象。这通常不是有效的JSON对象,因为CindyJS使用的数据类型与JavaScript不同。
打印({“a”:1,“b”:false,“c”:“mystring”});
{a:1,b:false,c:mystring}
循环字典允许使用圆形对象,但打印输出会缩短。默认递归深度为1000,但可以使用修饰符进行调整最大深度
:
dic={“a”:1};dic.b=dic;打印(dic,最大深度->3);
警告:我们经常访问键值对,或者遇到嵌套非常深的字典。字典可能是循环的。输出可能不完整。{a:1,b:{a:1,b:{a:1,b:{a:…,b:…}}}}
访问列表元素:字典›名称
描述:通过点操作符可以进行基本(静态)访问。点后面的变量是不评价的。
检索字典的所有键和值:钥匙(›dict›)
和值(dict›)
描述:要将字典的所有键或值作为列表检索,可以使用钥匙(dict›)
和值(dict›)
json={“a”:1,“b”:2};键(json);
[“a”,“b”]
值(json);
[1, 2]
动态访问列表元素:dict›_var›
和采取(dict›,var›)
描述:可以使用中缀操作符动态访问dict的各个元素›列表›_Ş变量›
或函数运算符采取(列表›,变量›)
.钥匙(无功功率,无功功率
)可以是任何可打印类型。
json={“a”:1,“b”:2};json“a”
1
take({“a”:1,“b”:2},“b“)
2
应用表达式:应用(dict›,expr›)
描述:此运算符通过应用操作生成新列表出口›
dict的所有元素(但不是键)并收集结果。像往常一样,#
是run变量,它连续获取列表中每个元素的值。
应用({“a”:1,“b”:2},#^2);
{a:1,b:4}
应用表达式:应用(бdict›、бvar›、expr›)
描述:类似应用(列表›,表达›)
,但run变量现在已命名var›
.该变量是表达式的局部变量。
v=123;应用({“a”:1,“b”:2},v,v^2);
{a:1,b:4}
v(v)
123
应用表达式:应用(бdict›、бvarVal›、varKey›和бexpr›)
描述:类似应用(列表›、变量›、б表达式›)
,但有两个运行变量:varVal›
对于值和varVal›
用于密钥。变量是表达式的局部变量。
应用({“a”:1,“b”:2},v,k,k+v);
{a:a1,b:b2}
选择列表元素:选择(Şlist›,Şboolexpr›)
描述:此运算符选择满足特定条件的dict的所有元素。条件应该由编码boolexpr›
.假设此表达式返回嘘声›
值。像往常一样,#
是run变量,它连续获取列表中所有元素的值。
选择({“a”:5,“b”:2},isodd(#));
{a:5}
选择列表元素:选择(列表›、变量›、бboolexpr›)
描述:类似选择(dict›,boolexpr›)
,但运行变量现在命名为var›。该变量是表达式的局部变量。
v=123;选择({“a”:5,“b”:2},v,isodd(v))
{a:5}
v(v)
123
forall循环:对于所有人(dict›,expr›)
描述:此运算符用于将操作应用于dict的所有元素。这需要一个字典›
作为第一个参数。它产生一个循环,其中出口›
对每个进行评估价值列表中的。对于每次运行,运行变量#
取相应列表值的值。
例子:
a={“a”:5,“b”:2};forall(a,打印n(#))
此代码片段生成输出
修改人
forall支持修饰符迭代器
这会更改正在运行的变量的行为:“value”迭代字典值(默认值),“key”迭代词典键,“pair”返回一个基本字典元素,可以使用“.key”和“.value属性”访问该元素的键和值。
迭代器键示例:
a={“a”:5,“b”:2};forall(a,println(#),迭代器->“键”)
此代码片段生成输出
迭代器对示例:
a={“a”:5,“b”:2};对于所有(a,println([#.key,#.value]),迭代器->“pair”)
此代码片段生成输出
forall循环:对于所有人(dict›、var›、бexpr›)
描述:类似对于所有人(dict›,expr›)
,但run变量现在已命名var›
.该变量是表达式的局部变量。
v=994;k=123;对于所有({“a”:5,“b”:2},v,println(v))
52
v(v)
994
k
123
从字典中删除键:
通过将键值对的值设置为未定义的值,可以将其从字典中删除。
json={“a”:1,“b”:2};json.a=纳达;
警告:正在访问未定义的变量:nada
对于所有(json,k,println(k));
2
键(json)
[“b”]
已弃用字典
这不应该再使用了。
创建新的:dict()
如果没有参数,这将创建一个空字典。
使用修饰符构造dict:dict(›修改1›,›修改2›,…)
然而,可以将元素添加到此字典中通过在函数调用中使用修饰符。修改器的名称将用作字符串键。
dict(foo->“bar”,baz->123)
{“baz”:123,“foo”:“bar”}
用这种方式定义非字符串键的字典是不可能的。
添加映射:put(dict›,expr1›,бexpr2›)
使用等效于创建新词典字典›
但在其中钥匙expr1›被映射到值expr2›。
d=dict();d=放置(d,12,34);d日
{12:34}
这是真的不修改第一个参数中传递的字典,因此您必须将结果存储回以永久更改现有字典。
放置(d,56,78)
{12:34, 56:78}
d日
{12:34}
可以将未定义的值用作字典键。
put(dict(),(;),“什么?”)
{___:“什么?”}
不同的复数对应不同的键,即使他们有相同的真实角色。
d=dict();d=放置(d,32+1*i,321);d=放置(d,32-1*i,329);d=放置(d,32,320);d=放置(d,“32”,23);
{32-i*1:329,32:320,32+i*1:321,“32”:23}
请注意,在本文档中使用引号特定于文档。值的通常字符串化在灰姑娘和灰姑娘中,JS不使用引号,这可能导致以混淆输出。例如,上面的dict可以出现拥有到相同的密钥32
:
打印(d)
{32-i*1:329,32:320,32+i*1:321,32:23}
检索值:获得(бdict›,бexpr›)
检索与键关联的值出口›
,或___
如果字典中没有该键。
d=dict(k->77);get(d,“k”)
77
get(d,“d”)
___