欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

SwiftUI Swift内功之Swift 中的 some vs any

发布时间:2024/5/15 编程问答 42 豆豆
生活随笔 收集整理的这篇文章主要介绍了 SwiftUI Swift内功之Swift 中的 some vs any 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

介绍

some

  • 持有混凝土类型
  • 保证类型关系

any

  • 持有任意具体类型
  • 擦除类型关系

#正文
在本文中,我总结了 WWDC 2022 关于“some”和“any”的会议内容。

代表特定具体类型的占位符的抽象类型称为不透明类型opaque type。被替换的具体具体类型称为基础类型underlying type。

对于具有 opaque 类型的值,底层类型对于值的范围是固定的。这样,使用该值的通用代码保证每次访问该值时都获得相同的底层类型。

使用“some”关键字的类型和尖括号中的命名类型参数都声明了不透明类型。

some Animal <T: Animal>

不透明类型可用于输入和输出,因此可以在参数位置或结果位置声明它们。功能箭头是这些位置之间的分界线。不透明类型的位置决定了程序的哪一部分看到了抽象类型,而程序的哪一部分决定了具体类型。

命名类型参数总是在输入端声明,所以调用者决定底层类型,实现使用抽象类型。

func getValue<T>(Parameter) -> Result

通常,为不透明参数或结果类型提供值的程序部分决定了底层类型,而使用该值的程序部分看到了抽象类型。因为基础类型是从一个值推断出来的,所以基础类型总是来自与值相同的位置。对于局部变量,底层类型是从赋值右侧的值推断出来的。

let animal: some Animal = Horse()

这意味着具有 opaque 类型的局部变量必须始终具有初始值&

总结

以上是生活随笔为你收集整理的SwiftUI Swift内功之Swift 中的 some vs any的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。