1
'emun'在我看來就像一個關鍵字或基本類型。 很顯然下面的代碼無法編譯:如何檢查一個實例是否爲枚舉類型
if self is enum {
}
但我怎麼能能夠檢查如果某些協議由任何enum實施?
protocol Enumatable {
}
extension Enumatable {
func isEnum() -> Bool {
return self is enum //it does not compile
}
}
但我真正想要的是在協議中設置某種約束來強制採用類爲枚舉。那可能嗎?
謝謝!
我不認爲這是可能的。但真正的問題是爲什麼? –
那麼,因爲使用枚舉的case結構,我可以爲我的庫提供一個簡單而安全的api。我不希望用戶能夠使用類或結構來實現協議,因爲我的庫使用枚舉的值作爲內部鍵,另外我希望這種模式是實現協議的唯一方式。 –
您可能與'ErrorType'類似的情況。錯誤類型最好用作枚舉類型,但這並不意味着我們必須將其限制爲枚舉類型。你不可能阻止你的用戶在腳下自己射擊。一個好的文檔是最好的,你可以做的。 –