问题
假设我有一个这样的结构:

struct Foo
{
  var i : Int
  var c : Character
}

为调试目的向NSLog()提供输出的规范方法是什么?
换句话说,在我应该执行的SWIFT中有一个C++等价的friend std::ostream& operator<<( std::ostream& os, Foo const& foo )吗?

最佳答案

执行Printable协议。

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 - 快速重载字符串转换的规范方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26361535/

10-13 04:23
查看更多