泛型

2017-08-04 43 views
0
的有償使用

我在前任同事的代碼凝視(上擴展),看起來像這樣:泛型

func set<Object: SomeProtocol>(object value: Object) { 

什麼優勢與仿製藥的簽名帶來比普通的舊版本?

func set(object value: SomeProtocol) { 
+2

比較(https://stackoverflow.com/q [什麼是通用的,協議類型的函數參數之間的在實踐區別?]/38446487/2976878) – Hamish

+0

感謝@Hamish,把問題和你的答案投給了那裏,非常有幫助。 –

回答

2

作爲一種模式,您的前同事的版本更靈活,因爲它應該可以與任何類型的協議一起使用。相關類型的協議,例如,不會與您當前的版本:

// error: protocol 'Equatable' can only be used as a generic constraint because it has Self or associated type requirements 
func foo(bar: Equatable) {} 
+0

非常有趣,所以你可以做'func foo (bar:T){}'而不用編譯問題。嗯... –