由於Swift Language Guide指出泛型類型可以是制約類或協議是這樣的:如何創建一個約束於結構的泛型類?
public class MyGenericClass<T:Equatable> {
func printEquality(a:T, b:T) {
if a == b {
print("equal")
} else {
print("not equal")
}
}
}
我可以以某種方式限制T
是一個struct
?
我的用例是值類型的觀察者類,它只應被結構體使用。
附註:我知道有例如只有類的協議,只能通過類來實現。這並沒有真正相關,但表明有時候有一種特殊的方式來實現目標。
protocol SomeClassOnlyProtocol: class, SomeInheritedProtocol {
// class-only protocol definition goes here
}
繼承僅與類(引用類型)相關。 SomeInheritedProtocol在Swift中沒有意義。與協議相關的是一致性。但運行時檢查某些類型的實例是否符合AnyObject協議是否可用使用is運算符 – user3441734
密切相關:http://stackoverflow.com/questions/33623104/how-to-restrict-a-protocol-to-value-types -only: –
@ user3441734該代碼片段是Swift語言指南中「協議」一章的引用。 – Klaas