1

我有一个全局枚举,用于仅在应用程序处于调试状态时运行的全局函数。它看起来像这样:

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

这有效......但让我畏缩。必须有更好的解决方案...

4

1 回答 1

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

或者简单地说:

于 2020-07-15T23:00:37.743 回答