在 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
    }
}

或者简单地说: