在swift中重载字符串转换的规范方法是什么?

时间:2014-10-14 13:02:38

标签: debugging swift struct output

问题

假设我有这样的结构:

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

为了调试目的,为NSLog()提供输出的规范方法是什么?

换句话说,我应该在swift中实现与friend std::ostream& operator<<( std::ostream& os, Foo const& foo )相当的C ++吗?

1 个答案:

答案 0 :(得分:3)

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