Racket mutable hash to immutable hash

时间:2017-04-17 23:10:48

标签: hashmap hashtable racket immutability

我正在使用hash-set程序在hash?中设置值。似乎要求散列为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)))))))

为了更新它,有没有更好的方法将可变哈希转换为不可变哈希?或者我应该采取不同的方式?

1 个答案:

答案 0 :(得分:2)

如果哈希值是可变的,您可以使用hash-set!直接修改它:

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

以上内容将原位更改哈希的值,而hash-set将返回 new 哈希,您必须在其他地方存储或重新分配。