作爲一種學習練習,我試圖編寫一個小函數庫。我的庫中的許多函數都需要傳入一個函數。我希望「函數式」這個函數,以便我的庫的用戶必須傳遞一個具有特定簽名的函數。typealias通用函數
我已經試過這樣:
typealias Callback = Result<AnyObject> ->()
這類作品,但我想AnyObject
部分是任何。不是特別的AnyObject
,因爲這實際上是某種真實類型(?)。我的Result
枚舉我基於這個article關於Swift中的錯誤處理。這是一個泛型的枚舉,所以這就是我想要反映在我的函數簽名中的東西。
如果我刪除<AnyObject>
部分,我得到一個錯誤說:
Reference to generic type 'Result' requires arguments in <...>
如果我只是爲了Result<T>
我得到的錯誤:
Use of undeclared type 'T'
至於我的理解是它的不可能使用泛型。所以......在這附近呢?
TLDR;
我有一堆的,我想採取特定簽名的函數作爲參數的功能,在我的情況:
(result: Result<T>) ->()
如何強制呢?
作爲@natecook筆記,這是目前不可能,但我們也只是討論了幾乎同樣的事情在這裏:http://stackoverflow.com/questions/25909856/how-do-i- generify-a-closure-type-alias-in-swift/25912041#25912041 – 2014-09-22 06:08:26