В настоящее время лучший/предпочтительный способ определения явных преобразований в 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 в иерархиях типов, это правильно?