Существует ли протокол, определяющий, что тип должен быть инициализирован строкой? - PullRequest
4 голосов
/ 16 апреля 2019

Я написал следующий код, чтобы помочь преобразовать текстовые значения из полей формы в ожидаемые значения:

protocol StringConvertableValueType {
    init?(_ string: String)
}

extension Int: StringConvertableValueType {
}

extension String: StringConvertableValueType {
}

extension Double: StringConvertableValueType {
}

extension Float: StringConvertableValueType {
}

Как вы видите, все эти примитивные типы уже поддерживают один и тот же инициализатор.Однако, проливая на документацию , я не могу найти общий protocol, который делает это.Хотя мне кажется, что я заново делаю что-то, что уже сделано людьми, которые создали Фонд.

Существует ли уже какое-то protocol, которое позаботится об этом, или люди, которые построили Foundationпросто удостоверился, что API действительно согласован, но нет протокола, обеспечивающего его соблюдение?

1 Ответ

5 голосов
/ 16 апреля 2019

Я верю, что вы ищете LosslessStringConvertible.Int наследует это от FixedWidthInteger.Это временное наследование протокола не отображается в документах для соответствующих типов.(Это может сбивать с толку, и если это доставит вам неприятности, вы можете открыть радар , чтобы расширить документы.)

...