簡體   English   中英

任何類型的Swift泛型

[英]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<>>')

簡單解決方案

如果您希望BaseFirst作為泛型類型,那么為什么使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM