“xcrun swift”用于结果的方法/属性是什么?

时间:2016-08-09 17:11:21

标签: swift read-eval-print-loop

我的第一个猜测是它会是debugDescriptiondescription,但是对于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/"

不是debugDescriptiondescription

  3> NSURL(fileURLWithPath: "X").debugDescription
$R1: String = "X -- file:///private/tmp/"
  4> NSURL(fileURLWithPath: "X").description
$R2: String = "X -- file:///private/tmp/"

显然,如果您只是定义debugDescriptiondescription(例如class Foo here),它也不会打印出来。 (它将它们用于print()debugPrint()。)

默认情况下,在repl中打印的是什么?

1 个答案:

答案 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

返回REPL

现在,当我说let myClass = MyClass(),时,我得到了:

myClass: MyClass = This is a MyClass