Какой смысл соответствовать пустому протоколу в Swift - PullRequest
2 голосов
/ 01 марта 2020

Я просто работаю над базой кода, где большинство классов соответствует пустому протоколу. Есть ли смысл делать это? Фактически соответствие этому протоколу ничего не дает.

Редактировать как реакцию на полезный комментарий @ vacawama: протокол используется только один раз

import Foundation

protocol myUrlRequestConfig {}

extension myUrlRequest: myUrlRequestConfig {
    public static func configGetAppConfig() -> URLRequest {
        let request = ....
        return request
    }
}

1 Ответ

2 голосов
/ 01 марта 2020

Пустой протокол может быть полезен, если вы хотите создать простой способ добавления stati c функций или переменных в несколько различных классов. Конечно, это имеет смысл, только если функциональность stati c одинакова для всех классов, соответствующих протоколу.

Вот пример: у меня большой протокол. Каждый класс, соответствующий Sizeable, расширяется с помощью переменной шага и размера stati c.

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 
...