41 Swift不透明类型

简介: Swift不透明类型

不透明类型

why

image.png

  • 代码是可以编译通过的,但是makeTrapezoid的返回类型又臭又长,被暴露了出去

image.png

  • 不能将其Container用作函数的返回类型,因为该协议具有关联类型。也不能将它用作返回类型的泛型约束,因为函数体外没有足够的信息来推断泛型类型需要什么

image.png

解决问题

image.png

image.png

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

  • 返回opaque类型看起来非常类似于使用协议类型作为函数的返回类型,但这两种返回类型的不同之处在于它们是否保留了类型标识。opaque类型是指一种特定类型,尽管函数的调用者不能看到是哪种类型;协议类型可以指代符合协议的任何类型。一般来说,协议类型为存储的值的基础类型提供了更大的灵活性,而不透明类型可以对这些基础类型做出更强有力的保证

image.png




目录
相关文章
|
4月前
|
存储 Swift
在Swift编程语言中,浮点数类型
在Swift编程语言中,浮点数类型
65 6
|
4月前
|
Swift
在Swift编程语言中,整数类型
在Swift编程语言中,整数类型
47 1
|
11月前
|
算法 Swift C++
34 Swift为了协议 关联类型
Swift为了协议 关联类型
63 0
|
4月前
|
安全 Swift
Swift 语言:什么是可选类型(Optional)?如何处理可选类型的安全解包?
Swift的可选类型是处理值可能缺失的类,用?表示。它们能表示有值或无值状态。安全解包用`if let`或`guard let`避免崩溃,而强制解包`!`则风险较高,若值为`nil`会触发运行时错误。
35 0
|
4月前
|
Swift
在Swift编程语言中,有符号整数类型
在Swift编程语言中,有符号整数类型
42 2
|
4月前
|
编译器 Swift
在Swift编程语言中,布尔类型
在Swift编程语言中,布尔类型
43 1
|
Swift
Swift - 如何让UIView,UILabel和UIImageView之间类型互相转化
Swift - 如何让UIView,UILabel和UIImageView之间类型互相转化
134 0
|
安全 编译器 API
Swift 中的幻象类型
模糊的数据可以说是一般应用程序中最常见的错误和问题的来源之一。虽然 Swift 通过其强大的类型系统和完善的编译器帮助我们避免了许多含糊不清的来源——但只要我们无法在编译时保证某个数据总是符合我们的要求,就总是有风险,我们最终会处于含糊不清或不可预测的状态。
113 0
Swift 中的幻象类型
|
Swift
Swift实用小册22: OpaqueTypes不透明类型的使用
在本章中,你将学会OpaqueTypes不透明类型的使用方法。
273 0
Swift实用小册22: OpaqueTypes不透明类型的使用
|
Swift
Swift实用小册18:NestedTypes嵌套类型的使用
在本章中,你将学会NestedTypes嵌套类型的使用方法。
208 0
Swift实用小册18:NestedTypes嵌套类型的使用