是否有可能返回一種符合協議的泛型,以便以後使用Swift 1.2的類函數使用?看看:返回Generic.Type以備將來與類方法一起使用
protocol SomeProtocol
{
static func start(kind: Kind)
}
class A: SomeProtocol
{
class func start(kind: Kind)
{
print("A started")
}
}
class B: SomeProtocol
{
class func start(kind: Kind)
{
print("B started")
}
}
enum Kind {
case Akind
case Bkind
private func classKind<T: SomeProtocol>() -> T.Type
{
switch self {
case .Akind: return A.self
case .Bkind: return B.self
}
}
func doSomething() {
self.classKind().start(self)
}
}
我試過各種方法,但每個方法都以一些錯誤結束。目前,我得到的'A'不是classKind方法中的'T'的子類型(與'B'相同),並且不能用doSomething中的類型'(Kind)'的參數列表調用'start'。 我敢肯定,我很接近,但解決不了......
那麼,沒有辦法實現我想要的?我的主要目標是在'doSomething'方法中使用'type.start(...)',而不需要明確寫入顯式類型。 – Kubba
在我的答案的第一位,我說你需要做什麼才能使它工作:)我編輯我的答案,希望使這一點更清晰。 – ABakerSmith
之後,您在'doSomething()'中更改'classKind() - > SomeProtocol.Type'我得到:訪問協議類型值'SomeProtocol.Type'的成員未實現 – Kubba