why

- 想畫一個(gè)不規(guī)則四邊形,代碼是可以編譯通過的,但是返回類型又臭又長,被暴露了出去。

- 不能將 Container 用作函數(shù)的返回類型,因?yàn)樵搮f(xié)議具有關(guān)聯(lián)類型。也不能將它用作返回類型的泛型約束,因?yàn)楹瘮?shù)體外沒有足夠的信息來推斷泛型類型需要什么。

解決問題


返回不透明類型 VS 返回協(xié)議類型
- 返回 opaque 類型看起來非常類似于使用協(xié)議類型作為函數(shù)的返回類型,但這兩種返回類型的不同之處在于他們是否保留了類型標(biāo)識。opaque 是指一種特定類型,盡管函數(shù)的調(diào)用者不能看到是哪種類型;協(xié)議類型可以指代符合協(xié)議的任何類型。一般來說,協(xié)議類型為存儲的值的基礎(chǔ)類型提供了更大的靈活性,而不透明類型可以對這些基礎(chǔ)類型做出更強(qiáng)有力的保證。