1

我知道 [array names X] 返回的名称是未定义的顺序,但它们总是以相同的未定义顺序吗?

我正在处理一个非常大的数组,并且想在发生崩溃时将进度记录到文件中,这样我就可以再次部分恢复。

PS。一个快速的实验意味着它总是相同的“随机”顺序,但这并不意味着它是真的!

4

1 回答 1

5

简短的回答是您不能依赖顺序,最好的选择是 [lsort [array names X]] 并使用该顺序。

长答案是,只要密钥相同(以及相同的 Tcl 版本),订单应该是稳定的......但我仍然不会依赖它。

如果您使用的是 Tcl 8.5 或更高版本,您可能希望考虑使用 Dict 而不是数组。Dict 的元素顺序是它们被添加的顺序。

于 2009-06-15T13:33:55.893 回答