Swift 命名空间(namespace)的实现 发表于 2020-03-25 | 分类于 ios | | 字数统计: 193 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152/// 实例对象的包装器public struct CCWrapper<WrappedType> { /// 包装后的值 let wrappedValue: WrappedType init(wrappedValue: WrappedType) { self.wrappedValue = wrappedValue }}/// 命名空间协议public protocol NameSpaceWrapper { associatedtype WrapperType var cc: WrapperType { get } static var cc: WrapperType.Type { get }}/// 命名空间协议默认实现public extension NameSpaceWrapper { var cc: CCWrapper<Self> { return CCWrapper(wrappedValue: self) } static var cc: CCWrapper<Self>.Type { return CCWrapper.self }}// 使用extension String: NameSpaceWrapper {}extension CCWrapper where WrappedType == String { var hi: String { return "Hi, I'm \(self.wrappedValue)" } func sayHi(to person: String) { print("\(self.wrappedValue) say hi to \(person)") } static func hi(_ person: String) { print("Hi, \(person)") } }print("Bruce".cc.hi)//Hi, I'm Bruce"Bruce".cc.sayHi(to: "Max")//Bruce say hi to MaxString.cc.hi("Jack")//Hi, Jack 您的支持将鼓励我继续创作! 打赏 微信支付 支付宝 本文作者: zzzwco 本文链接: http://zzzw.cool/Swift-命名空间(namespace)的实现.html 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!