Class-Swift 中的内部协议

Class-internal Protocols in Swift

如何在 Swift 中实施 class- 内部协议?

问题是

class C {
    private protocol P {
        func aFunction()
    }

    private class D: P {
        func aFunction() {
            //...
        }
    }
}

导致错误

Declaration is only valid at file scope

有什么绕过这个问题的想法吗?

排除:我做不是参考class-only protocols,当然有可能。

swift 中的访问控制是基于文件的。我不相信您可以在 class 中定义协议,但您可以将其包含在同一文档中。

private protocol P {
    func aFunction()
}

class C {
    private class D: P {
        private func aFunction() {
            //...
        }
    }
}

当然这并不意味着继承自classC的classes可以使用协议P.

据我所知Swift不支持基于继承的访问控制。