boycgit / swiftui-knowledge

收集和 swiftui 相关的知识点
MIT License
2 stars 0 forks source link

【知识点】高级语法some 和 opaque return type #6

Open boycgit opened 4 years ago

boycgit commented 4 years ago

Opaque return types 是 Swift 5.1 新的语言属性。它可以用于函数、方法和属性返回一些值,无需向调用API的客户端揭示该值的具体类型。返回的类型将是一些实现了协议的类型。使用此解决方案,模块API不必公开泄漏该方法的基本内部返回类型,只需使用some关键字返回协议的隐晦类型即可。在 SwiftUI 中,该解决方案通常用于 View 中返回 body 属性中的某些 View 。

boycgit commented 4 years ago

参考文档

boycgit commented 4 years ago

简单来说,如果不用 som 关键字的话,需要声明所有可能的 View 类型,这会把开发者累死。

但是需要注意,有了 some 关键字后,返回所有可能的类型必须相同:

比如下方例子中,有可能返回 Text 或者 Color 这两种不同类,和 some 关键字含义冲突了,此时会报错: 返回两种不同类型将报错

可以将返回值统一成 Color 类型: 将返回值统一成 `Color` 类型