Использование расширений Swift для пользовательских типов

Утверждается, что расширения используются для расширения класса, структуры или перечисления, не требуя подкласса. Это привело меня к мысли, что его предполагаемое использование было разработано для расширения уже существующего типа, такого как String, Int или других более сложных типов в каркасах; типы, которые были разработаны другими, например, в рамках OS X Frameworks.

Я заметил, что типы значений, такие как String, Int, Double и т. Д., Реализованы в виде простых структур со многими расширениями. Например, Double определяется как

struct Double {

    /// Create an instance initialized to zero.
    init()
    init(_bits v: Builtin.FPIEEE64)

    /// Create an instance initialized to `value`.
    init(_ value: Double)
}

Имея опыт работы в C++, я этого не ожидал и ожидал, что методы по умолчанию будут частью типа, а не расширениями.

Есть ли преимущества для разработки пользовательских типов с расширениями, а не для традиционной объектно-ориентированной инкапсуляции методов в классе или структуре, и если да, то когда было бы целесообразнее использовать этот дизайн над классом или структурой с инкапсулированными методами?

0 ответов

Другие вопросы по тегам