【问题标题】:load a map of hash - object key pair加载哈希 - 对象密钥对的映射
【发布时间】:2025-12-09 14:10:01
【问题描述】:

请考虑这个示例,我将map! 保存到文件中并希望将其加载回并访问其键和值。它的键是散列(整数!,由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 有办法吗?

【问题讨论】:

    标签: rebol rebol3 red


    【解决方案1】:

    SAVE 使用了一种不完美但更易读的格式。使用SAVE/ALL 将所有值保持原样(SAVE/ALL 使用#[datatype! value] 形式的调用序列化格式)。

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

    【讨论】: