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

标签 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 中打印什么?

最佳答案

REPL 是 lldb 的扩展。因此,对于类和结构,它在评估后打印类型摘要。您可以找到更多相关信息 here .

您可以为类(class)创建自定义类型摘要。例如,我可以输入:

class MyClass: NSObject
{

}

let myClass = MyClass()

进入 REPL,打印:

myClass: MyClass = {
  ObjectiveC.NSObject = {
    isa = __lldb_expr_45.MyClass
  }
}

然后我可以通过键入 进入 lldb: 在 lldb 中,我可以将 MyClass 绑定(bind)到自定义类型摘要,方法是:

type summary add --summary-string "This is a MyClass" MyClass

我可以通过键入命令返回到 REPL:repl

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

myClass: MyClass = This is a MyClass

关于swift - "xcrun swift"用于结果的方法/属性是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38856765/

相关文章:

readline - 在Android的QPython控制台中访问命令历史记录

node.js - 在 Node REPL 中使用第 3 方包

scala - 如何让 sbt `console` 使用 -Yrepl-sync?

ios - 我是否需要使用 Mac App Store 上提供的最新可用版本的 Xcode 来构建我的项目以供提交,还是我可以使用旧版本

Swift font.withSize 不改变 UILabel 上的字体大小

ios - WebView 和状态栏

swift - 如何在不将密码放入 Vapor 3 的 configure.swift 的情况下配置 Fluent/MySQL 数据库连接?

ios - 使用 UIButton 作为开关

javascript - 如何启动可以访问 node.js 中的局部变量的 REPL?

python - sys.argv[0] 总是什么都不返回