返回const字典

时间:2016-04-03 12:53:13

标签: dictionary const julia

在Julia中,假设我有一个返回字典的函数:

function f()
    d = [i => 2i for i = 1:10]
    return d
end

我想将字典作为const返回。也就是说,无法添加或删除密钥,也无法重新分配现有密钥。是否可以修改f以便返回的字典是const?

2 个答案:

答案 0 :(得分:3)

Julia的标准库不提供不可变的关联类型。您可以自己实现这样的类型,而不是为它定义任何setindex!方法。但是,修改返回的字典可能更容易。

答案 1 :(得分:2)

尽管Julia在其标准库中没有readonly Dict(有未导出的ImmutableDict,但只能防止删除,而不是设置),也不在DataStructures.jl包中,它可以公平很容易作为一个包添加。

readonly Dict有许多优点,例如,可以生成一个完美的散列函数,以便只用一个探测器找到(或不找到)条目。 (https://www.gnu.org/software/gperf/manual/gperf.html描述了一个生成完美哈希的工具。)