В настоящее время лучший/предпочтительный способ определения явных преобразований в Swift? В верхней части головы я могу думать о двух:
-
Создание пользовательских инициализаторов для типа назначения через расширение, например:
extension String { init(_ myType: MyType) { self = "Some Value" } }
Таким образом, вы можете просто использовать
String(m)
, где m имеет типMyType
, чтобы преобразовать m в строку. -
Определение
toType
-Methods в исходном типе, например:class MyType { func toString() -> String { return "Some Value" } }
Это сопоставимо с Swift
String.toInt()
, которое возвращаетInt?
. Но если бы это был окончательный путь, я бы ожидал, что для этого будут протоколы для базовых типов, такие как инверсия уже существующих протоколов*LiteralConvertible
.
Подпроцесс: ни один из двух методов не позволяет компилировать что-то подобное: let s: MyString = myTypeInstance (as String)
(часть в скобках необязательна), но если я правильно понимаю, оператор as
предназначен только для downcasting в иерархиях типов, это правильно?