Swift 2排序 - 无法使用类型为

时间:2015-11-02 13:01:02

标签: sorting swift2

我有一节课,说Penguin

class Penguin {
   var beakLength: Float
}

尝试按如下方式对Penguins数组进行排序:

let penguins = [Penguin]()
let sortedPenguins = penguins.sort { $0.beakLength < $1.beakLength }

给出错误消息:

  

无法使用类型'的参数列表调用'sort'(@noescape   (Penguin,Penguin) - &gt;布尔)'

     

预期类型的​​参数列表'(@noescape(Self.Generator.Element,   Self.Generator.Element) - &gt;布尔)'

我在这里缺少什么?

4 个答案:

答案 0 :(得分:7)

对于遇到同样问题的人来说,上面的代码示例并不完全正确。 实际更像是什么:

var sortedPenguins = [Chimp]()

let penguins = [Penguin]()
sortedPenguins = penguins.sort { $0.beakLength < $1.beakLength }

D'哦!

答案 1 :(得分:1)

请注意,在 Swift 3 中, sort 函数执行“就地”排序,并且不返回值(mutating func sort())。要创建原始数组的已排序副本,现在使用已排序func sorted() -> [Element])。

答案 2 :(得分:0)

class Penguin : CustomStringConvertible {
    var description: String { return beakLength.description }
    var beakLength: Float
    init(length: Float){
        beakLength = length
    }
}


var penguins = [Penguin]()
penguins.append(Penguin(length: 10))
penguins.append(Penguin(length: 20))
penguins.append(Penguin(length: 5))
print(penguins)
print(penguins.sort { $0.beakLength < $1.beakLength })

答案 3 :(得分:0)

由于Sort已在 swift3 中弃用 您可以尝试使用此代码来获取数组中的最大字符数。

let Penguin = ["as","asc","you","bce","csi","aasi","aaas","this"]
let maxLen = penguin.sorted{ $0.characters.count > $1.characters.count}
 print(maxLen)

结果应该是 [&#34; aasi&#34;,&#34; aaas&#34;,&#34;这&#34;,&#34; asc&#34;,&#34;你&#34;,&#34; bce&#34;,&#34; csi&#34;,&#34; as&#34;]