Я хотел бы поставить альтернативное решение здесь:
Протоколом для интерполяции строк в Swift является StringInterpolationConvertible
. То есть любой класс, который реализует протокол, может быть построен из интерполяции строк.
Назад к вопросу, чтобы определить, что распечатывается для интерполяции строк строки класса A
, вам необходимо создать расширение строки и перегрузить функцию init(stringInterpolationSegment expr: A)
.
extension String {
init(stringInterpolationSegment expr: A) {
//do custom work here
//for example: self.init(expr.description)
}
}
В случае, если вы ищете способ удаления раздражающего «Дополнительного (...)», Когда интерполяционный Дополнительные переменные, которые я думаю, главная причина, почему люди хотят, чтобы контролировать, как объект получает распечатаны, просто посмотреть на стручок NoOptionalInterpolation here
Дополнительная информация (отредактированный):. Убедитесь, что переопределяем description
будет работать только для вашей собственной структуры/класса, но не для существующей структуры/класса, такие как Int
и Optional
.
Вы уверены, что это работает? Я думал, что то же самое, попробовал на детской площадке, и это показывает, что-то вроде '__lldb_expr_551. Test'. Независимо от версии «Printable» или нет. – Antonio
Также задокументировано здесь: https://developer.apple.com/library/prerelease/ios/documentation/General/Reference/SwiftStandardLibr aryReference/Printing.html. –
Интересно. Он работает в скомпилированном приложении, но не на игровой площадке. –