我只是在一个代码库上,其中大多数类都符合一个空协议。这样做有什么意义吗?实际上符合该协议不会执行任何操作。
编辑为对@vacawama的有用评论的回应:该协议仅使用一次
import Foundation
protocol myUrlRequestConfig {}
extension myUrlRequest: myUrlRequestConfig {
public static func configGetAppConfig() -> URLRequest {
let request = ....
return request
}
}
如果您想创建一种将静态函数或变量添加到几个不同类的简单方法,则空协议很有用。当然,只有在所有符合协议的类的静态功能都相同的情况下,这才有意义。
这里是一个示例:我有一个相当大的协议。符合Sizeable的每个类都使用静态变量stride和size扩展。
protocol Sizeable { }
extension Sizeable {
static var size: Int {
return MemoryLayout<Self>.size
}
static var stride: Int {
return MemoryLayout<Self>.stride
}
}
class Foo: Sizeable {}
class Baa: Sizeable {}
Foo.size
Baa.size