我希望通过添加一些额外的输出来扩展CustomStringConvertible
中class
协议的默认行为。
例如,假设您在名为Bar的项目中有class
:
class Baz {
let x = 42
}
let b = Baz()
执行po(b)
时,输出将为Bar.Baz
我希望显示一些额外的内容,例如x
的值,而无需再次输入Bar.Baz
这可能吗?
答案 0 :(得分:3)
您使用的大多数类具有CustomStringConvertible
的默认实现的原因是因为NSObject
(所有Obj-C类的超类)实现它。
如果已经定义了自己的Swift基类,则必须首先声明它符合CustomStringConvertible
然后实现它,例如
class Dog: CustomStringConvertible {
// some code and stuff here
var name = "Bobby"
// conform to CustomStringConvertible
var description: String {
return "\(NSStringFromClass(self.dynamicType)) \(name)"
}
}
print(Dog()) // outputs: "__lldb_expr_70.Dog Bobby" in Playground
不符合CustomStringConvertible
的类只打印类名。