如何遍历已排序的集合?

How to iterate over a sorted set?

我用的是Xcode6.3,下面是Swift编程语言书上的代码:

var fav:Set=["cd","bsa","aft"]
for genre in fav.sort(){
   println("\(genre)")
}

但是编译报错

'Set' does not has a member named 'sort'

Apple 在 Xcode 6.4 中添加了 sort()Set,还是我用错了?

如果您使用的是 Xcode 6.3,那么您正在阅读错误版本的 iBook。目前本书有两个版本。

  1. The Swift Programming Language
  2. The Swift Programming Language (Swift 2 Prerelease)

前者包含使用 Swift 1.2 的示例,后者随 Xcode 6.3 一起提供,而后者将这些示例转换为 Swift 2,后者需要 Xcode 7。

对于您提供的代码,Apple 提供了非预发行版书中的以下示例。

for genre in sorted(favoriteGenres) {
    println("\(genre)")
}

它使用通过协议扩展声明的 Swift 1 的全局 sorted() function, which (as well as the global sort() function) has been removed in Swift 2. In Swift 2, both of these global functions have been replaced by sort() 实例方法。

这是一个快速比较:

Swift 2

var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"]
for genre in favoriteGenres.sort() {
    print("\(genre)")
}

Swift 1.2

var favoriteGenres: Set = ["Rock", "Classical", "Hip hop"]
for genre in sorted(favoriteGenres) {
    println("\(genre)")
}

有关更多文档,请参阅 Collection Types