3
如何在Swift的類型系統中說「如果元素類型T
符合協議Q
」,則Array<T>
符合協議P
「?在Swift中有條件地解除一般類型的協議
我在這個問題上,在那裏P
和Q
是同一協議的一個更具體的版本實際上感興趣的是:你說「如果數組的元素是P
-conforming,則該數組爲P
-conforming 」。這是迄今爲止我所擁有的。 (我想一個簡單的快速檢查庫,從http://chris.eidhof.nl/posts/quickcheck-in-swift.html開始:Arbitrary
,標誌着可以隨機生成的類型)
protocol Arbitrary {
class func arbitrary() -> Self
}
extension Array {
static func arbitrary<T where T : Arbitrary>() -> [T] {
// code to create a random-length list of T objects
// using T.arbitrary() for each one
}
}
extension Array<T where T : Arbitrary> : Arbitrary {}
這失敗,出現錯誤
extension of generic type 'Array' cannot add requirements
extension Array<T where T : Arbitrary> : Arbitrary {}
對於未來的Google:檢查斯威夫特的當前狀態,這個功能(暫定)計劃的一部分「[完成泛型](http://thread.gmane.org/gmane.comp.lang.swift.evolution/8484)「 – Tikitu 2016-05-13 08:45:18