我想爲我的泛型枚舉編寫一個初始化器,它需要Alamofire的通用Result枚舉並將其轉換爲我自己的Result類型。我想出來的是這樣的:從另一個泛型枚舉初始化一個通用的Swift枚舉?
public enum Result<Value, Error: ErrorType> {
case Success(Value)
case Failure(Error)
public init(result: Alamofire.Result) {
switch(result) {
case Alamofire.Result.Success(let val):
self = MyFramework.Result.Success(val)
case Alamofire.Result.Failure(let err):
self = MyFramework.Result.Failure(err)
}
}
}
但是我遇到了以下錯誤:
Cannot invoke 'Success' with an argument list of type '(Value)'
明確指定通用參數可以消除奇怪的編譯器錯誤,但解決該問題會揭示甚至更怪異的段錯誤。在更多地使用它之後,似乎引用「MyFramework」是導致它的原因。任何想法,爲什麼可能是這種情況?我在回答中總結了我的發現。 – blau
我沒有注意到當我測試這個時,但是那時你的代碼處在比我簡單的測試文件更復雜的環境中。再次,我認爲你應該在bugs.swift.org上提交一個bug,這樣有人可以看一下它(如果它還不是已知的問題)。 – jtbandes
會做什麼;我將在提交錯誤報告之前嘗試進一步分析問題。謝謝你的幫助。 – blau