Swift 中如何使用字典類型作為範型約束

今天學員群裡有人提了這麼一個問題,為什麼把特性的字典類型作為範型類型約束的時候,就必然報錯?

用特定的字典類型作為範型類型約束會報錯

顯然,說的很明確了,“你不能從一個非協議、非類的類型繼承”。顯然,字典是個範型結構體……

那麼解決思路也很明確了,創建一個類來裝飾個字典或許是個不錯的選擇但太麻煩,那麼就從協議上下手。

有條件的協議遵循

我們可以給字典這個結構體進行擴展,讓它遵循一個我們的空協議:

但注意這裡我們限定條件,即字典的 Key 必須是 String 類型:

內容全部為空,因為不用做任何額外的操作。

這樣,我們就可以用這個協議來進行約束了,如果字典的類型不符合要求,那麼這個字典就不會遵循我們的協議:

測試結果

 

由...出版 R0uter

如非聲明,本人所著文章均為原創手打,轉載請註明本頁面鏈接和我的名字。

發表評論

您的電子郵件地址不會被公開. 必填字段標 *