【发布时间】:2017-10-10 19:37:32
【问题描述】:
我正在使用一个 for 循环来创建一个 dicts 键和值的字符串。 不幸的是,swift 在 Mac 和 Linux 上的行为不同。
for key in parameters.keys.sorted() {...}
我想按字节值排序我的键,而不是按字母顺序,小写参数应该列在大写参数之后。
所以像“AWT”这样的键应该在像“Ast”这样的键之前。
【问题讨论】:
-
在 Apple 平台上,您将获得所需的订单。在 Linux 上,这是一个应该在 Swift 4 中修复的已知错误,请参阅bugs.swift.org/browse/SR-530。 – 注意这里跟字典或者key没有关系,只是字符串的比较是怎么实现的,
print(["AWT", "Ast"].sorted())足以看出苹果和Linux的区别。 -
.sorted() 可以接受参数“使用给定谓词排序作为元素之间的比较”。有没有办法手动实现正确的排序?
-
也许您应该首先澄清“按字节值排序”对您的确切含义。
-
好吧,对我来说,这意味着当查找时:asciitable.com 所以大写“W”的十进制值位于小写“a”之前。所以就像在 ascii 表中一样,我想对其进行排序。与我的示例相比,“AWT”和“Ast”都以“A”开头,但随后“W”出现在“a”之前。
-
非ASCII字符呢?在 Apple 平台上,“a”
标签: swift linux macos dictionary swift3