Wow*_*nch 4 access-control readonly subscript swift
以下2个下标有什么区别?
subscript(position: Int) {
get { ... }
}
Run Code Online (Sandbox Code Playgroud)
subscript(position: Int) {
_read { ... }
}
Run Code Online (Sandbox Code Playgroud)
_read是已经开发了一段时间的 Swift Ownership 故事的一部分。由于read(一旦它穿过斯威夫特演进可能的名字)是你可能会想读在它在所有权宣言描述至少语言相当先进的理念在这里得到一个更完整的答案比我会在这里提供。
它是geton 下标的替代方法,允许您使用yield一个值而不是return一个值。这对于仅移动类型是必不可少的,因为它们不能被复制(这是它们的全部目的),这是当您return使用值时会发生的情况。通过使用read它,您可以拥有一个Array仅移动类型,并且仍然使用其中的值,而无需通过移动它们来获取它们的所有权。从概念上考虑它的最简单(并且技术上不正确,因为它是一个协程)方法是您获得一个指向read yields.
的兄弟read就是modify这是目前在斯威夫特演进的沥青相在这里,这样也可以给你一些有用的洞察read是因为它是一个协程为好。
所以现在如果 Xcode 给你一个_read实现,只需将它更改为get因为它是一个错误,因为它不是语言的官方部分。