问题
假设我有这样一个结构:
struct Foo
{
var i : Int
var c : Character
}
为调试目的向 NSLog() 提供输出的规范方式是什么?
换句话说,是否有 C++ 等效于 friend std::ostream& operator<<( std::ostream& os, Foo const& foo )
我应该 swift 实现吗?
最佳答案
实现Printable
协议(protocol)。
struct Foo: Printable {
var i : Int
var c : Character
var description: String {
return "i = \(self.i), c = \(self.c)"
}
}
var foo = Foo(i: 1, c: "a")
println(foo)
println("foo = \(foo)")
NSLog("\(foo)")
还实现了DebugPrintable
,用于单独的描述,专门用于必要时的调试:
protocol DebugPrintable {
var debugDescription: String { get }
}
关于debugging - 在 swift 中重载字符串转换的规范方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26361535/