gpt4 book ai didi

swift - '无法推断通用参数 'T''

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

我不知道为什么会这样,我想根据 MyProtocol 返回一个数组参数,所以我试图通过以下方式实现:

import Foundation

protocol Test {

}

protocol ArrayTest {
associatedtype E : Test
}

extension Array : ArrayTest where Element:Test{
typealias E = Element
}

class BBB {
func ggg<T:ArrayTest>( kk: ((_ value:T) -> Void)?){

}
}

class AAA<T:ArrayTest> {

func ggg(){
BBB().ggg { (test) in//Generic parameter 'T' could not be inferred
here

}
}
}

最佳答案

你不能只做 BBB().ggg { (test: [Test]) in ... 因为 [Test] 不符合 ArrayTest.

正如您所写,这可能会让您感到惊讶:

extension Array : ArrayTest where Element: Test{
typealias E = Element
}

当然上面的扩展适用于[Test],对吧?否。要应用上述扩展,Element 必须符合 Test,但 Test does not conform to itself .

我想你的意思可能是这样的:

class AAA<T:ArrayTest> {

func ggg(){
BBB().ggg { (test: T) in

}
}
}

这使用 AAA 声明中的 T

而作为AAA类的使用者,你需要传递一个符合ArrayTest的实际类型,比如[U] ,其中 U 是符合 Test 的类型。

关于swift - '无法推断通用参数 'T'',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52868428/

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