What is the Swift equivalent of -[NSObject description]? -
in objective-c, 1 can add description
method class aid in debugging:
@implementation myclass - (nsstring *)description { return [nsstring stringwithformat:@"<%@: %p, foo = %@>", [self class], foo _foo]; } @end
then in debugger, can do:
po fooclass <myclass: 0x12938004, foo = "bar">
what equivalent in swift? swift's repl output can helpful:
1> class myclass { let foo = 42 } 2> 3> let x = myclass() x: myclass = { foo = 42 }
but i'd override behavior printing console:
4> println("x = \(x)") x = c11lldb_expr_07myclass (has 1 child)
is there way clean println
output? i've seen printable
protocol:
/// protocol should adopted types wish customize /// textual representation. textual representation used when objects /// written `outputstream`. protocol printable { var description: string { } }
i figured automatically "seen" println
not appear case:
1> class myclass: printable { 2. let foo = 42 3. var description: string { { return "myclass, foo = \(foo)" } } 4. } 5> 6> let x = myclass() x: myclass = { foo = 42 } 7> println("x = \(x)") x = c11lldb_expr_07myclass (has 1 child)
and instead have explicitly call description:
8> println("x = \(x.description)") x = myclass, foo = 42
is there better way?
through experimentation have discovered printable
, debugprintable
protocols work when compiling actual app, not in repl or playground.
side note: code wrote correct, in case, looking debugprintable
swift has renamed these protocols customstringconvertible
, customdebugstringconvertible
- though compiler helpfully tells it's done :)
Comments
Post a Comment