gpt4 book ai didi

arrays - 协议(protocol)扩展错误数组

转载 作者:搜寻专家 更新时间:2023-11-01 05:35:57 25 4
gpt4 key购买 nike

我正在从 Apple 论坛编写一些代码。一切似乎都正确,但我不断收到两个错误。有人请帮忙。下面是代码,后面是错误。

protocol Container{
associatedtype ItemType
mutating func append(item: ItemType)
var count:Int{get}
subscript(i:Int)->ItemType{get}
}

extension Array: Container {}

func checkToSeeIfItemsEqual<C1:Container, C2:Container>(container1:C1, container2:C2) -> Bool where C1.ItemType == C2.ItemType, C1.ItemType:Equatable{

if container1.count != container2.count{
return false
}
for i in 0..<container1.count{
if container1[i] != container2[i]{
return false
}
}
return true
}

var damnArray = [1, 2, 4]
var damnArray2 = [1, 2, 4]
let theBool = checkToSeeIfItemsEqual(container1: damnArray, container2: damnArray2)
print(theBool)

enter image description here

最佳答案

Any 不可相等,因此您不能使用 Any 数组调用 checkToSeeIfItemsEqual。

我不确定您到底想做什么,但我认为您可能误解了 equatable 的工作原理。表达式两边的类型必须已知且相同。例如 bool == bool 。如果你有一个数组,你就无法知道数组元素的类型,因此无法比较它们。

如果你想比较两个相同类型的数组,你可以这样做:

func arraysAreEqual<ElementType: Equatable>(firstArray: [ElementType], secondArray: [ElementType]) -> Bool {

guard firstArray.count == secondArray.count else {
return false
}

for i in 0..<firstArray.count{
if firstArray[i] != secondArray[i]{
return false
}
}
return true
}

关于arrays - 协议(protocol)扩展错误数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39951164/

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