Swift编程:不透明类型与自动引用计数深度解析
不透明类型(Opaque Types)
不透明类型是Swift中一个强大的特性,它允许函数或方法隐藏返回值的具体类型信息,而是通过其所遵循的协议来描述返回值。这种特性在模块与调用模块的代码之间的边界处非常有用,因为返回值的底层类型可以保持私有。与返回协议类型的值不同,不透明类型保留了类型标识,编译器可以访问类型信息,但模块的客户端无法访问。
不透明类型解决的问题
假设我们正在编写一个绘制ASCII艺术形状的模块。ASCII艺术形状的基本特征是有一个 draw() 函数,它返回该形状的字符串表示。我们可以将其作为 Shape 协议的要求:
protocol Shape {
func draw() -> String
}
struct Triangle: Shape {
var size: Int
func draw() -> String {
var result: [String] = []
for length in 1...size {
result.append(String(repeating: "*", count: length))
}
return result.joined(separator: "\n")
}
}
let smallTriangle = Triangle(size: 3)
print(smallTriangle.draw(
超级会员免费看
订阅专栏 解锁全文
688

被折叠的 条评论
为什么被折叠?



