加载哈希 - 对象密钥对的映射

时间:2015-07-21 15:32:03

标签: rebol rebol3 red

请考虑这个示例,我将map!保存到文件中,并希望将其加载回来并访问其键和值。它的键是哈希值(INTEGER!,由checksum计算),其值为块:

Rebol []

bl1: make object! [
        name: "first"
        age: 42
]

bl2: make bl1 []

bl2/name: "second"
bl2/age: 30

hash1: checksum to-binary to-string bl1
hash2: checksum to-binary to-string bl2

m1: make map! []
repend m1 [hash1 bl1]
repend m1 [hash2 bl2]

save %./map_example.ls m1

m2: do load %./map_example.ls
probe join "m2: " type? m2

返回"m2: map!"

%map_example.ls 文件包含:

make map! [
    2749161 make object! [
        name: "first"
        age: 42
    ]
    4111405 make object! [
        name: "second"
        age: 30
    ]
]

如何阅读map!以访问其作为对象的键和值?

foreach是一种方法吗?

1 个答案:

答案 0 :(得分:4)

SAVE使用不完美但更易读的格式。使用SAVE/ALL完全按照原样保留所有值(SAVE/ALL使用#[datatype! value]形式的序列化格式。

此外,只需使用LOAD而不是DO LOAD来获取数据。在这种情况下不需要DO - LOAD将字符串转换为Rebol值,因为它只是数据,而不是脚本,不需要DO它(你可以,但它只是返回自己)。