swift - 为通用协议(protocol)实现提供具体类型

标签 swift oop swift2 swift-protocols

是否可以执行以下操作:

protocol A: class {
    typealias T: AnyObject
}
extension A {
    func testA(a:Self, _ t:T)->Void{
        print(a, t)
    }
}
class B:A {
    typealias T = String
}

换句话说,我有协议(protocol)并且想在符合它的类中提供具体类型。

最佳答案

应该没问题。您的代码的唯一问题是 String 不是 AnyObject

你只需要:

protocol A: class {
    typealias T
}
extension A {
    func testA(a:Self, _ t:T)->Void{
        print(a, t)
    }
}
class B:A {
    typealias T = String
}

关于swift - 为通用协议(protocol)实现提供具体类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36059308/

相关文章:

java - 管理不善如何应对

java - 子类可以与其父类关联吗?

java - 使用 0 到另一个 java 类中的多个对象初始化对象

ios - 事件指示器并不总是呈现

ios - Swift 异步从目录加载图像

swift - Swift 中的方法最多可以有多少个参数,为什么?

ios - 将字符串日期格式化为 DiffForHumans 样式

ios - Swift 中的 "func observeValueForKeyPath(keyPath : NSString, object : AnyObject, change : NSDictionary, context : Void)"问题

c++ - 通过命令行编译和链接 Swift/Objective-C++ 应用程序

ios - 如何在 ios,swift 中初始化我的 ViewController 扩展中的 ui 元素