使用通用协议方法,但对整个类使用通用协议方法

问题描述 投票:0回答:1

我正在尝试实现一个具有通用参数的协议方法,但随后将整个类而不是仅在方法上使用通用类型,就像这样]

protocol FirstProtocol {
}

protocol SecondProtocol {
    func foo<T: FirstProtocol>(argument: T)
}

class MyType<T: FirstProtocol>: SecondProtocol {
    var value: T? = nil
    func foo<T>(argument: T) {
        value = argument     // ERROR: Cannot assign value of type 'T' to type 'T?'
    }
}

因此,迅速的编译器接受foo<T>(argument:T)SecondProtocol的方法匹配,如果我注释掉错误行,它可以很好地编译,但是即使我将argument

分配给value,它也不会valueargument应该是相同的类型,编译器会抱怨它们好像是不同的类型。

我正在尝试实现一个具有通用参数的协议方法,但随后将整个类而不是仅在该方法上使用通用类型,类似于此协议FirstProtocol {...

swift generics swift-protocols swift5
1个回答
0
投票

即使值和参数应该是同一类型,它也不允许我将参数分配给值,编译器会抱怨它们好像是不同的类型。

© www.soinside.com 2019 - 2024. All rights reserved.