我有一节课,说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;布尔)'
我在这里缺少什么?
答案 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;]