[英]is it possible swift func get <T> enum?
有两个 func 从参数中获取枚举,是否有可能这些 func 仅组合了一个 func?
func rushdownSetupListener(event: RushdownListenEvent, handler: @escaping ([Any], SocketAckEmitter) -> Void) -> UUID? {
guard let client = self.client else {
return nil
}
let listenerId = client.on(event.rawValue, callback: handler)
return listenerId
}
func hystoriaSetupListener(event: HystoriaListenEvent,handler: @escaping ([Any], SocketAckEmitter) -> Void) -> UUID? {
guard let client = client else {
return nil
}
let listenerId = client.on(event.rawValue, callback: handler)
return listenerId
}
由于这两个枚举都有一个String
作为其原始值,因此它们都符合RawRepresentable
where RawValue == String
。 因此,您可以引入一个严格限制为的泛型参数类型:
func setupListener<EventType>(event: EventType, handler: @escaping ([Any], SocketAckEmitter) -> Void) -> UUID?
where EventType: RawRepresentable, EventType.RawValue == String {
guard let client = self.client else {
return nil
}
let listenerId = client.on(event.rawValue, callback: handler)
return listenerId
}
您甚至应该能够将函数体简化为:
client?.on(event.rawValue, callback: handler)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.