gpt4 book ai didi

swift - 为 CollectionType(数组)添加排序功能

转载 作者:可可西里 更新时间:2023-11-01 00:37:32 25 4
gpt4 key购买 nike

我想将自己的排序功能添加到数组中,因此我正在尝试扩展 CollectionType 协议(protocol)以添加此功能。这是我目前所拥有的:

extension CollectionType where Generator.Element : Comparable, Index : IntegerType{
func psoInsertionSort(){

var key: Generator.Element
var x, y: Int


for (x = 0; x < self.count; x++){
key = self[x]

for (y = x; y >= 0; y--){
if key < self[y]{
self.removeAtIndex(y+1)
self.insert(key, atIndex: y)
}
}
}
}
}

我需要将 CollectionType 中的元素约束为 Comparable 以进行实际排序,我相信那里没有问题。

我遇到的问题是在 for 循环参数中:

for (x = 0; x < self.count; x++){

Binary operator '<' cannot be applied to operands of type 'Int' and 'Self.Index.Distance'

看起来 self.count 是 Self.Index.Distance 类型,老实说,我什至不确定它是否是同一类型的 Self.Index。

最佳答案

您只需将这些添加为协议(protocol)要求即可。因此,您可以要求索引距离 Int :

Index.Distance == Int 

或者你可以改变你的循环条件:

for (var x = self.startIndex; x < self.endIndex; x++){

(您还需要在此处将协议(protocol)要求更改为 Index == Int,并删除之前的 var x 声明)

或者,集合类型的一个属性正是您在该循环中寻找的:

for x in self.indices

此外,您的函数 removeAtIndexinsert不仅需要 CollectionType ,而是一个 RangeReplaceableCollectionType .

并且该函数需要标注mutating

关于swift - 为 CollectionType(数组)添加排序功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31226422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com