2016-07-16 125 views
1

我們如何在Swift中檢查一個泛型類型是從其他類型繼承的?如何檢查一個泛型是否是Swift中其他泛型類型的子類?

我有這樣的代碼:

class Style<U: Styleable> { 
    ... 
    init<V: Styleable>(_ style: Style<V>) { 
     ... 
    } 
} 

我需要確保這裏面初始化它,只有當UV子類可以被調用。我不知道有什麼方法可以在編譯時檢查它 - Swift不允許(但也許?)將一個泛型限制爲其他類的子類。所以我唯一能做的就是使用一些斷言,這樣程序在錯誤使用時會崩潰。

你有什麼建議如何解決這個問題?

+0

@MartinR:我舉了一個錯誤的例子。我試圖解決的真正問題有點困難。請檢查編輯的問題。 –

回答

1

嗯,我找到了答案。這是如此接近: assert(U.self is V.Type)

+0

這是編譯時語句的運行時檢查。它有效,但爲時已晚。 –

相關問題