Swift 获取与 _read
Swift get vs _read
下面2个下标有什么区别?
subscript(position: Int) {
get { ... }
}
subscript(position: Int) {
_read { ... }
}
_read
是已经开发了一段时间的 Swift 所有权故事的一部分。由于 read
(经过 Swift 演化后的可能名称)是该语言的相当先进的概念,您可能希望至少阅读所有权宣言 here 中对其进行描述的地方得到比我在这里提供的更完整的答案。
它是下标 get
的替代方法,允许您 yield
一个值而不是 return
一个值。这对于仅移动类型是必不可少的,因为它们不能被复制(这是它们的全部目的),当您 return
一个值时会发生这种情况。通过使用 read
它可以做到这一点,例如,您可以拥有一个仅移动类型的 Array
并且仍然使用其中的值而不通过移动它们来获取它们的所有权。从概念上考虑它的最简单(并且在技术上不正确,因为它是协程)的方法是您获得指向 read
yields
.
的对象的指针
read
的兄弟姐妹是 modify
,目前处于 Swift 进化 here 的投球阶段,这样也可以让您对 here 有一些有用的见解=11=] 因为它也是一个协程。
所以现在,如果 Xcode 给你一个 _read
来实现,只需将它更改为 get
因为它是一个错误,因为它还不是该语言的官方部分.
下面2个下标有什么区别?
subscript(position: Int) {
get { ... }
}
subscript(position: Int) {
_read { ... }
}
_read
是已经开发了一段时间的 Swift 所有权故事的一部分。由于 read
(经过 Swift 演化后的可能名称)是该语言的相当先进的概念,您可能希望至少阅读所有权宣言 here 中对其进行描述的地方得到比我在这里提供的更完整的答案。
它是下标 get
的替代方法,允许您 yield
一个值而不是 return
一个值。这对于仅移动类型是必不可少的,因为它们不能被复制(这是它们的全部目的),当您 return
一个值时会发生这种情况。通过使用 read
它可以做到这一点,例如,您可以拥有一个仅移动类型的 Array
并且仍然使用其中的值而不通过移动它们来获取它们的所有权。从概念上考虑它的最简单(并且在技术上不正确,因为它是协程)的方法是您获得指向 read
yields
.
read
的兄弟姐妹是 modify
,目前处于 Swift 进化 here 的投球阶段,这样也可以让您对 here 有一些有用的见解=11=] 因为它也是一个协程。
所以现在,如果 Xcode 给你一个 _read
来实现,只需将它更改为 get
因为它是一个错误,因为它还不是该语言的官方部分.