球拍可变哈希到不可变哈希

Racket mutable hash to immutable hash

我正在使用过程 hash-sethash? 中设置一个值。似乎要求散列为immutable?。到目前为止,我找不到比以下更好的方法将可变散列转换为不可变散列:

(make-immutable-hash (hash->list myhash))

散列是一些 yaml,我正在从文件中读取它,yaml 模块为我提供了一个可变散列。例如我有以下代码:

(hash-set yaml-hash
                "content"
                (make-immutable-hash
                 (hash->list
                  (my-hash-map content-hash
                               (lambda (key value)
                                 (cons key
                                       (markdown-to-html value)))))))

是否有更好的方法将可变散列转换为不可变散列以更新它?还是我应该换个方式?

如果散列一开始是可变的,您可以直接使用 hash-set!:

修改它
(hash-set! yaml-hash <key> <new-value>)

以上内容将就地更改散列值,而 hash-set 将 return 一个 new 散列,您必须存储或重新分配到其他地方。