在Swift中符合空协议的意义是什么

问题描述 投票:2回答:1

我只是在一个代码库上,其中大多数类都符合一个空协议。这样做有什么意义吗?实际上符合该协议不会执行任何操作。

编辑为对@vacawama的有用评论的回应:该协议仅使用一次

import Foundation

protocol myUrlRequestConfig {}

extension myUrlRequest: myUrlRequestConfig {
    public static func configGetAppConfig() -> URLRequest {
        let request = ....
        return request
    }
}
swift swift-protocols
1个回答
1
投票

如果您想创建一种将静态函数或变量添加到几个不同类的简单方法,则空协议很有用。当然,只有在所有符合协议的类的静态功能都相同的情况下,这才有意义。

这里是一个示例:我有一个相当大的协议。符合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 
© www.soinside.com 2019 - 2024. All rights reserved.