Swift 2:在抽象超类中指定所需变量

Swift 2:在抽象超类中指定所需变量,swift,Swift,我想写一些关于类和协议的东西。我只想要一种带有明确定义的函数或函数的协议 protocol ObjectProtocol { var endpoint: String } class Object { // All subclasses must implement ObjectProtocol func printAPIEndpoint() { print(endpoint) } } 这样我就可以很容易地定义如下类: class User: Object, Obj

我想写一些关于类和协议的东西。我只想要一种带有明确定义的函数或函数的协议

protocol ObjectProtocol {
    var endpoint: String
}

class Object {
    // All subclasses must implement ObjectProtocol

    func printAPIEndpoint() { print(endpoint) }
}
这样我就可以很容易地定义如下类:

class User: Object, ObjectProtocol {
    var endpoint = "localhost:3000"
}

实现这种功能的最佳方法是什么?

带有默认方法实现的协议扩展 可能是您正在寻找的:

protocol ObjectProtocol {
    var endpoint: String { get }
}

extension ObjectProtocol {
    func printAPIEndpoint() { print(endpoint) }
}
这将为所有对象定义默认方法
printAPIEndpoint()
符合
ObjectProtocol
的类型,比较 Swift参考中的“提供默认实现”

用法示例:

class User: ObjectProtocol {
    var endpoint = "localhost:3000"
}

let user = User()
user.printAPIEndpoint()