为什么swift2.0的字典序列是这样的?

时间:2016-02-03 15:51:43

标签: swift dictionary tuples

代码如下:

let values = ["small":30, "middle":50, "large":70]
var result = "Hello"
for a in values {
    result += a.0
}
print(result)

结果是:

Hellomiddlesmalllarge

我认为结果应该是:

Hellosmallmiddlelarge

谁能告诉我原因?感谢

1 个答案:

答案 0 :(得分:1)

字典没有订单。无论你在迭代它时获得的隐式顺序是依赖于实现的。 SwiftStub(在OS X上运行)和IBM Swift Sandbox(Linux)给出不同的命令。两者都有效,因为标准没有规定任何订单。

如果您想按字母顺序排序字典,则必须明确排序:

let values = ["small":30, "middle":50, "large":70]
var result = "Hello"

values.sort {
    $0.1 < $1.1
}.forEach {
    result += " " + $0.0
}

print(result)