我有一個抽象class
這樣定義的:創建一個工廠方法返回通用
class BaseCoordinator<ResultType>
其它類從這一個如繼承。
final class AppCoordinator: BaseCoordinator<Void>
final class AuthFlowCoordinator: BaseCoordinator<AuthFlowCoordinationResult>
final class MainFlowCoordinator: BaseCoordinator<Void>
現在我想創建一個工廠方法。我想這是sugnature應該是這樣的:
func makeCoordinator<T>() -> BaseCoordinator<T>
但是,當然,我得到這樣的錯誤這一個:
Cannot convert return expression of type 'AppCoordinator' to return type 'BaseCoordinator<T>'
什麼Xcode的建議我是添加as! BaseCoordinator<T>
,但我討厭這種力量向下轉換(並返回?
也不滿足我,因爲我100%肯定我會有一個正確的默認對象),因爲我想保證至少將返回一個默認的Coordinator
。
感覺就像我錯過了什麼,但我真的不知道它是什麼。實際上是可以做出這樣的工廠方法,還是Swift的泛型有限?
您如何實施工廠方法?你只是檢查「T」是什麼,並返回相應子類的實例? – Sweeper