在 Swift (5) 中,如何将 "Any..." 参数传递给 print() 语句而不将其打印为数组?
In Swift (5), how to I pass an "Any..." parameter to a print() statement without it printing as an array?
我有一个用于全局函数的全局枚举,我只想在应用程序处于调试状态时 运行。它看起来像这样:
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
}
}
这行得通……但让我感到畏缩。必须有更好的解决方案...
您可以简单地将项目映射到字符串中,用分隔符连接它们并打印结果字符串:
public enum Debug {
static func print(_ items: Any..., separator: String = " ", terminator: String = "\n") {
#if DEBUG
Swift.print(items.map({String(describing: [=10=])}).joined(separator: separator), terminator: terminator)
#endif
}
}
或者简单地说:
我有一个用于全局函数的全局枚举,我只想在应用程序处于调试状态时 运行。它看起来像这样:
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
}
}
这行得通……但让我感到畏缩。必须有更好的解决方案...
您可以简单地将项目映射到字符串中,用分隔符连接它们并打印结果字符串:
public enum Debug {
static func print(_ items: Any..., separator: String = " ", terminator: String = "\n") {
#if DEBUG
Swift.print(items.map({String(describing: [=10=])}).joined(separator: separator), terminator: terminator)
#endif
}
}
或者简单地说: