球拍可变哈希到不可变哈希
Racket mutable hash to immutable hash
我正在使用过程 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)))))))
是否有更好的方法将可变散列转换为不可变散列以更新它?还是我应该换个方式?
如果散列一开始是可变的,您可以直接使用 hash-set!
:
修改它
(hash-set! yaml-hash <key> <new-value>)
以上内容将就地更改散列值,而 hash-set
将 return 一个 new 散列,您必须存储或重新分配到其他地方。
我正在使用过程 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)))))))
是否有更好的方法将可变散列转换为不可变散列以更新它?还是我应该换个方式?
如果散列一开始是可变的,您可以直接使用 hash-set!
:
(hash-set! yaml-hash <key> <new-value>)
以上内容将就地更改散列值,而 hash-set
将 return 一个 new 散列,您必须存储或重新分配到其他地方。