我的第一个猜测是它会是debugDescription
或description
,但是对于NSURL,我会得到一些有趣的东西:
$ cd /tmp
$ xcrun swift
Welcome to Apple Swift version 2.2 (swiftlang-703.0.18.8 clang-703.0.30). Type :help for assistance.
1> import Foundation
2> NSURL(fileURLWithPath: "X")
$R0: NSURL = "X -- ile:///private/tmp/"
不是debugDescription
或description
:
3> NSURL(fileURLWithPath: "X").debugDescription
$R1: String = "X -- file:///private/tmp/"
4> NSURL(fileURLWithPath: "X").description
$R2: String = "X -- file:///private/tmp/"
显然,如果您只是定义debugDescription
和description
(例如class Foo
here),它也不会打印出来。 (它将它们用于print()
和debugPrint()
。)
默认情况下,在repl中打印的是什么?
答案 0 :(得分:2)
REPL是lldb的扩展。因此,对于类和结构,它在评估后打印类型摘要。您可以找到有关here的更多信息。
您可以为班级创建自定义类型摘要。例如,我可以输入:
class MyClass: NSObject
{
}
let myClass = MyClass()
进入REPL,打印:
myClass: MyClass = {
ObjectiveC.NSObject = {
isa = __lldb_expr_45.MyClass
}
}
然后我可以通过键入:
进入lldb。在lldb中,我可以将MyClass
绑定到自定义类型摘要,说:
type summary add --summary-string "This is a MyClass" MyClass
我可以通过输入命令:repl
现在,当我说let myClass = MyClass(),
时,我得到了:
myClass: MyClass = This is a MyClass