41 Swift不透明类型

不透明类型

why

image-20230313225148471.png
  • 代码是可以编译通过的,但是makeTrapezoid的返回类型又臭又长,被暴露了出去
image-20230313225421417.png
  • 不能将其Container用作函数的返回类型,因为该协议具有关联类型。也不能将它用作返回类型的泛型约束,因为函数体外没有足够的信息来推断泛型类型需要什么
image-20230313225707592.png

解决问题

image-20230313225847422.png
image-20230313225924903.png

返回不透明类型 vs 返回协议类型

  • 返回opaque类型看起来非常类似于使用协议类型作为函数的返回类型,但这两种返回类型的不同之处在于它们是否保留了类型标识。opaque类型是指一种特定类型,尽管函数的调用者不能看到是哪种类型;协议类型可以指代符合协议的任何类型。一般来说,协议类型为存储的值的基础类型提供了更大的灵活性,而不透明类型可以对这些基础类型做出更强有力的保证
image-20230313230302105.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容