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

标签 debugging swift struct output

问题

假设我有这样一个结构:

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/

相关文章:

c - C结构序列化中的结构填充影响(保存到文件)

debugging - WinDbg没有显示有用的信息

javascript - 如何让这个 ajax 下拉选择器适用于所有浏览器?

multithreading - 为什么 Pycharm 调试器不会在主线程外的断点处停止?

swift - SwiftUI用按钮更改 View

c# - 一个列表中的多个结构类型

c++ - VS2010SP1 : Project always out of date when debugging

ios - 无法将类型 'AnyDataSource<NSManagedObjectSubclass>' 的值分配给类型 'AnyDataSource<NSManagedObject>' 的值

swift - 如何为 UITableViewCell TextView 对象实现实时字数统计?

c - 如何计算 C 结构中的填充