3
我處於包含associatedtype
的自定義類型的情況。在這個情況下,這等於Void
,我想有一些默認行爲(使呼叫站點更方便)。我試着煮例如低至:將關聯類型等於Void的自定義類型擴展爲
protocol FooType {
associatedtype T: Any
var bar: (String) -> T { get }
}
struct Foo<T>: FooType {
let bar: (String) -> T
}
extension Foo where T == Void { // Compile error: "Same-type requirement makes generic parameter 'T' non-generic".
init() {
self.bar = { _ in return }
}
}
的想法是,在泛型類型爲Void
的情況下,它沒有任何意義(在我的情況)的一個函數時(命名爲bar
在這個例子中)。因此,我只想在這個特定的上下文中爲這個函數默認實現。
當試圖做到上述我得到Same-type requirement makes generic parameter 'T' non-generic
這聽起來非常類似於當試圖限制例如包含特定類型時的Array
類型。解決方法是引入一個協議,但我不能這樣做Void
。是否有可能做我想做的或者目前這是Swift 3中的限制?