Swift 协议的不同默认实现 属性
Swift different default implementations for protocol property
我知道您可以使用这样的协议扩展来提供默认值
protocol SomeProtocol {
var prop: String { get }
}
extension SomeProtocol {
var prop: String {
return "defaultValue"
}
}
struct SomeA: SomeProtocol {}
struct SomeB: SomeProtocol {}
let a = SomeA()
let b = SomeB()
debugPrint(a.prop) // prints defaultValue
debugPrint(b.prop) // prints defaultValue
但是有没有办法像这样为协议的不同实现设置不同的默认值,而无需为每个 class 或符合此协议的结构实现 属性?
debugPrint(a.prop) // prints defaultValue
debugPrint(b.prop) // prints differentDefaultValue
或一些类似的模式来做这样的事情?
协议继承。
protocol : SomeProtocol { }
extension {
var prop: String { "" }
}
struct SomeA: SomeProtocol { }
struct SomeB: { }
struct SomeC: { }
SomeA().prop // "defaultValue"
SomeB().prop // ""
SomeC().prop // ""
我知道您可以使用这样的协议扩展来提供默认值
protocol SomeProtocol {
var prop: String { get }
}
extension SomeProtocol {
var prop: String {
return "defaultValue"
}
}
struct SomeA: SomeProtocol {}
struct SomeB: SomeProtocol {}
let a = SomeA()
let b = SomeB()
debugPrint(a.prop) // prints defaultValue
debugPrint(b.prop) // prints defaultValue
但是有没有办法像这样为协议的不同实现设置不同的默认值,而无需为每个 class 或符合此协议的结构实现 属性?
debugPrint(a.prop) // prints defaultValue
debugPrint(b.prop) // prints differentDefaultValue
或一些类似的模式来做这样的事情?
协议继承。
protocol : SomeProtocol { }
extension {
var prop: String { "" }
}
struct SomeA: SomeProtocol { }
struct SomeB: { }
struct SomeC: { }
SomeA().prop // "defaultValue"
SomeB().prop // ""
SomeC().prop // ""