bog*_*gen 1 enums protocols swift
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
}
Run Code Online (Sandbox Code Playgroud)
用法:
ServerAction(label: .NotImplemented)
ClientAction(label: .NoneExisting)
Run Code Online (Sandbox Code Playgroud)
是否可以扩展TrackableAction以包含重复的枚举和标签定义?
我希望这能够将该类型的对象发送到函数
func log(trackableAction: TrackableAction) {
// sends strings to a log service
print(trackableAction.label) // ERROR
}
Run Code Online (Sandbox Code Playgroud)
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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2933 次 |
| 最近记录: |