swift – 带有私有构造函数的公共OptionSet

swift – 带有私有构造函数的公共OptionSet,第1张

概述我有一个示例代码: public struct MyOptions: OptionSet { public let rawValue: Int public init(rawValue: Int) { self.rawValue = rawValue } public static let one = MyOptions(rawValue: 1 我有一个示例代码:

public struct MyOptions: OptionSet {    public let rawValue: Int    public init(rawValue: Int) {        self.rawValue = rawValue    }    public static let one = MyOptions(rawValue: 1 << 0)    public static let two = MyOptions(rawValue: 1 << 1)}

在其他模块中我可以做到:

print(MyOptions.one)print(MyOptions(rawValue: 10))

如何使用私有构造函数和公共静态属性(如一,二)来公共结构来限制手动创建?

解决方法 你不能.将类型与协议一致时,所有必需存根的保护级别必须至少等于类型的保护级别.我会试着解释原因.

假设我有一个类型Foo,我符合Hashable.然后我将实例指定为Hashable类型:

let foo: Hashable = Foo()

因为实例是Hashable类型,所以我保证可以访问hash(into :)方法.但是如果我将该方法设为私有呢?那时你最终会出现意想不到的行为.由于某种原因,我无法访问我保证访问的方法,或者我有权访问我无法访问的方法.这是访问级别的冲突.

所以,是的,你想做的事是不可能的.

总结

以上是内存溢出为你收集整理的swift – 带有私有构造函数的公共OptionSet全部内容,希望文章能够帮你解决swift – 带有私有构造函数的公共OptionSet所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1003202.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存