ste*_*tis 5 inheritance visibility swift
我一直在浏览快速的文档,并研究了有关封装的一些示例,但不确定我所看到的行为。我已经在堆栈上寻找了类似的问题,浏览了文档并浏览了一些教程(请参阅下面的链接),尽管这是一个琐碎的问题,但找不到答案(可能是因为Swift发生了变化?)
创建一个表示队列的简单Struct:
struct Queue<Element> {
private var elements = [Element]()
mutating func enqueue(newElement: Element) {
elements.append(newElement)
}
mutating func dequeue() -> Element? {
guard !elements.isEmpty else {
return nil
}
return elements.remove(at: 0)
}
}
Run Code Online (Sandbox Code Playgroud)
后来扩展为:
extension Queue {
func peek() -> Element? {
return elements.first
}
}
Run Code Online (Sandbox Code Playgroud)
但是由于私有保护级别的原因,元素当然不可访问。它通过将元素的访问权限更改为fileprivate来起作用-但是为什么呢?
我的理解是扩展是封闭类型的一部分,并期待在网络上似乎是使用这种方式工作https://www.andrewcbancroft.com/2015/04/22/3-nuances-of-swift-扩展/
那么我对可见性的理解是错误的,还是Swift发生了变化?
| 归档时间: |
|
| 查看次数: |
7320 次 |
| 最近记录: |