[英]Swift generic with Any type
我有這樣的課程:
class Base<T> {
}
class First:Base<Int> {
}
class Second:Base<Double> {
}
如何聲明類型Base
以便能夠為其分配First
對象
當我嘗試Any
它不起作用:
class Test {
var base:Base<Any>
init(_ base: Base<Any>) {
self.base = base
}
}
Test(First())
它給了我:
Cannot convert value of type 'First' to expected argument type 'Base<Any>' (aka 'Base<protocol<>>')
如果您希望Base
將First
作為泛型類型,那么為什么使用Any
?
這段代碼可行
class Test {
var base:Base<First> // <- this must be First instead of Any
init(_ base: Base<First>) {
self.base = base
}
}
但是,如果您希望Test
接受不同類型的Base<T>
您應該聲明您的類如下
class Test<T> {
var base:Base<T>
init(_ base: Base<T>) {
self.base = base
}
}
Test<Base<Int>>(Base())
有關使用我的代碼的更多方法,請參閱@sargeras下面的評論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.