我在Linux上使用Swift 2.2,我需要在标准错误流上编写一些调试输出。
目前,我正在执行以下操作:
import Foundation
public struct StderrOutputStream: OutputStreamType {
public mutating func write(string: String) { fputs(string, stderr) }
}
public var errStream = StderrOutputStream()
debugPrint("Debug messages...", toStream: &errStream)
但是,我已将Swift升级到2.2.1,但Foundation
似乎已不再可用。
如何使用Swift 2.2.1编写标准错误流(并且下一次升级仍然可以使用?)
答案 0 :(得分:8)
来自https://swift.org/blog/swift-linux-port/:
Glibc模块:大多数Linux C标准库都可通过此模块获得,类似于Apple平台上的Darwin模块。
所以这应该适用于所有Swift平台:
#if os(Linux)
import Glibc
#else
import Darwin
#endif
public struct StderrOutputStream: OutputStreamType {
public mutating func write(string: String) { fputs(string, stderr) }
}
public var errStream = StderrOutputStream()
debugPrint("Debug messages...", toStream: &errStream)
Swift 3的更新:
public struct StderrOutputStream: TextOutputStream {
public mutating func write(_ string: String) { fputs(string, stderr) }
}
public var errStream = StderrOutputStream()
debugPrint("Debug messages...", to: &errStream) // "Debug messages..."
print("Debug messages...", to: &errStream) // Debug messages...