我收集到,在 Rebol 中,预计将使用一个块来表示任意结构化数据。是否存在将块视为列表以外的数据结构的内置或标准方法?
我在想:
- 堆栈
- 队列(可能是双端的)
- 套
- 地图又名。关联数组
我收集到,在 Rebol 中,预计将使用一个块来表示任意结构化数据。是否存在将块视为列表以外的数据结构的内置或标准方法?
我在想:
Rebol 有三个任意数据的持有者,它们都可以以相同的方式处理。
您以相同的方式对它们进行操作
insert append index? find poke select ...
但它们在结果上略有不同,尤其是在响应时间上。
在你的情况下使用
如前所述,所有操作都类似(甚至哈希!可以通过索引引用)。因此,您可以将它们中的任何一个视为关联数组。
>> x: [a one b two c 33]
== [a one b two c 33]
>> x/a
== one
>> x/c
== 33
>> select x 'b
== two
>> pick x 4
== two
这将导致哈希完全相同!定义为x: hash! [a 1 b 2 33]
。所以要添加一个新的键值对:
>> x: make hash! [ a 1 b 2 c 33]
== make hash! [a 1 b 2 c 33]
>> append x [ key value ]
== make hash! [a 1 b 2 c 33 key value]
>> x/key
== value
>> select x 'key
== value
>> pick x 8
== value
注意rebol没有键值对的感觉,散列!只是内部将构建散列的有序值列表!参考值。因此,您也可以问上面的值 33 后面是什么
>> select x 33
== key
要真正将其用于键值对,请使用跳过细化
>> select/skip x 33 2
== none
对于关联数组,您也可以使用 object!如果它不需要动态字段。