我正在尝试实现一个具有通用参数的协议方法,但随后将整个类而不是仅在方法上使用通用类型,就像这样]
分配给value,它也不会value和argument应该是相同的类型,编译器会抱怨它们好像是不同的类型。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
我正在尝试实现一个具有通用参数的协议方法,但随后将整个类而不是仅在该方法上使用通用类型,类似于此协议FirstProtocol {...
即使值和参数应该是同一类型,它也不允许我将参数分配给值,编译器会抱怨它们好像是不同的类型。