[英]Protocols with associated type in Swift 3
我发现关联类型对我来说让Swift变得有些复杂,尤其是因为我牢记Java方法。
我的问题是我想创建一个看起来像这样的简单接口(哦,正确,协议):
protocol Sender {
associatedtype Data
func send(data: Data)
}
在Java中,它看起来像这样:
class Sender<T> {
void send(T data);
}
现在,我想将此协议用作方法参数,但是我不知道如何在Swift中完成此操作,但是在Java中,它看起来像这样;)(以字符串类型为例)
void addSender(Sender<String> sender) {
// do something
}
那么如何使用Swift实现呢?
你可以写类似
func addSender<T: Sender>(_ sender: T) where T.Data == String {
}
我不确定是否有更短的选择可以完成这项工作。
String
的Sender
实现可能如下所示:
class StringSender : Sender {
//typealias Data = String <- This can be inferred from the parameter type of send
func send(data: String) {
// Send a string
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.