protocol TrackableAction {
var identifier: String { get }
}
struct ServerAction: TrackableAction {
let identifier = "Server"
enum Label: String {
case NotImplemented = "Feature not implemented"
case NotPlanned = "Feature is not planned in this version"
}
var label: Label
}
struct ClientAction: TrackableAction {
let identifier = "Client"
enum Label: String {
case NoneExisting = "Does not exist"
case CannotFindRoot = "The root was unknown"
}
var label: Label
}
用法:
ServerAction(label: .NotImplemented)
ClientAction(label: .NoneExisting)
是否可以扩展 TrackableAction 以包含重复的枚举和标签定义?
我希望它能够将该类型的对象发送到函数
func log(trackableAction: TrackableAction) {
// sends strings to a log service
print(trackableAction.label) // ERROR
}
最佳答案
protocol TrackableAction {
var identifier: String { get }
var label: Label {get set}
associatedtype Label: RawRepresentable
}
struct ServerAction: TrackableAction {
let identifier = "Server"
enum Label: String {
case NotImplemented = "Feature not implemented"
case NotPlanned = "Feature is not planned in this version"
}
var label: Label = Label.NotImplemented
}
func log<T: TrackableAction>(trackableAction: T) {
// sends strings to a log service
print(trackableAction.label) // ERROR
}
关于swift - 如何定义一个包含枚举的协议(protocol),该枚举具有它自己定义的值,并且其中一个值存储为属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36741286/