在Julia中,假设我有一个返回字典的函数:
function f()
d = [i => 2i for i = 1:10]
return d
end
我想将字典作为const返回。也就是说,无法添加或删除密钥,也无法重新分配现有密钥。是否可以修改f
以便返回的字典是const?
答案 0 :(得分:3)
Julia的标准库不提供不可变的关联类型。您可以自己实现这样的类型,而不是为它定义任何setindex!
方法。但是,修改返回的字典可能更容易。
答案 1 :(得分:2)
尽管Julia在其标准库中没有readonly Dict(有未导出的ImmutableDict
,但只能防止删除,而不是设置),也不在DataStructures.jl
包中,它可以公平很容易作为一个包添加。
readonly Dict有许多优点,例如,可以生成一个完美的散列函数,以便只用一个探测器找到(或不找到)条目。 (https://www.gnu.org/software/gperf/manual/gperf.html描述了一个生成完美哈希的工具。)