Swift get vs _read

7
以下两个下标有何区别?
subscript(position: Int) {
    get { ... }
}

subscript(position: Int) {
    _read { ... }
}
1个回答

10

_read 是 Swift 所有权故事的一部分,这个概念已经在开发中了一段时间。由于 read(经过 Swift Evolution 讨论后可能命名为 read)是该语言中相当高级的概念,您可能至少希望阅读所有权宣言这里中描述它的位置,以获得比我在此提供的更完整的答案。

它是与 get 类似的下标替代方案,允许您 yield 一个值而不是 return 一个值。对于仅限移动类型来说,这至关重要,因为它们不能被复制(这是它们的全部目的),而当你 return 一个值时就会进行复制。通过使用 read,它使得您可以例如拥有一个仅限移动类型的 Array 并且仍然可以使用其中的值而无需将其所有权转移给其他变量。概念上最简单(虽然不是技术上正确的协程)的方法是,您会获得一个指向 readyield 的对象的指针。

read 的兄弟是 modify,它目前处于 Swift Evolution 讨论阶段这里,因此它也可以为您提供有关 read 的一些有用的见解,因为它也是协程。

因此,如果 Xcode 让您实现 _read,那么只需将其更改为 get,因为这不是语言的正式组成部分,目前还处于研究阶段。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接