我尝试在 MacOSX 和 Linux 上的多个 Julia REPL 会话中运行以下代码,并且输出始终完全相同(以相同的顺序):
julia> (Set([1, 2, 3, 4]), Dict(1=>2, 3=>4, 5=>6))
(Set([4, 2, 3, 1]), Dict(3 => 4,5 => 6,1 => 2))
Run Code Online (Sandbox Code Playgroud)
问题:这种行为是否由语言、会话、平台和版本以及所有基于哈希的集合保证?
笔记:
hash()(它密切相关,但又不同)。不,这是内部实现的一部分,与内部事物一样,开发人员不保证订单行为在各种平台和版本中都相同。
同时,如果你想要有保证的顺序Set或Dict结构,你可以使用OrderedCollections.jl或Dictionaries.jl来保留顺序。关于字典,你也可以阅读这个和这个主题,因为它们除了顺序保存之外还有其他不错的功能。
| 归档时间: |
|
| 查看次数: |
47 次 |
| 最近记录: |