Как в Swift (5) передать параметр "Any..." в оператор print() без его печати в виде массива?
У меня есть глобальное перечисление, которое я использую для глобальных функций, которые я хочу запускать только во время отладки приложения. Это выглядит примерно так:
public enum Debug {
static func print(_ items: Any..., separator: String = " ", terminator: String = "\n") {
#if DEBUG
Swift.print(items, separator: separator, terminator: terminator)
#endif
}
}
Однако когда я использую
Debug.print(35)
выход
["35"]
Я хочу, чтобы вывод выглядел так же, как обычный оператор печати:
35
Кто-нибудь знает, что я делаю неправильно или мог бы сделать иначе?
Похоже, мне нужно "распаковать" items
параметр и поместите каждый из них в оператор печати по отдельности, но это кажется неправильным подходом.
public enum Debug {
static func print(_ items: Any..., separator: String = " ", terminator: String = "\n") {
#if DEBUG
for item in items {
Swift.print(item, terminator: separator)
}
Swift.print("", terminator: terminator)
#endif
}
}
Это работает... но заставляет меня съеживаться. Должно быть лучшее решение...
1 ответ
Решение
Вы можете просто отобразить свои элементы в строки, соединить их с разделителем и распечатать получившуюся строку:
public enum Debug {
static func print(_ items: Any..., separator: String = " ", terminator: String = "\n") {
#if DEBUG
Swift.print(items.map({String(describing: $0)}).joined(separator: separator), terminator: terminator)
#endif
}
}
Или просто: