如何在 gnu smalltalk 中探索命名空间

How to explore a namespace in gnu smalltalk

当使用 gnu smalltalk(没有集成 emacs)时,commands/process人们用什么来探索命名空间的内容?例如,我想了解如何使用 NetClients 的内容,但如果我只输入

NetClients examine

我看到大量文本滚动过去。是否有可能将其传递到 less 之类的内容中,以便我可以来回滚动浏览它?理想情况下,我希望看到 类 的列表,以及它们的一般描述。然后对于那些 类 我希望只能看到他们的选择器。

如果您想在发送消息时在文本输出中进行搜索,我只需将输出重定向到文件即可。

我会做以下事情:

  1. gst -a > netclients_namespace.txt
  2. 类型:NetClients examine
  3. 检查 netclients_nemespace.txt 文件,您将在其中输出消息。您可以在 gst 仍然是 运行
  4. 时检查它
  5. 如果你完成了就通过ctrl+c
  6. 打破它

解释:

-a --smalltalk-args           Pass the remaining arguments to Smalltalk.

允许您输入消息并重定向输出。

编辑:(在命名空间错过了关于 类 的问题)

话虽这么说,但我不是 GNU Smalltalk 的忠实粉丝,因为我不喜欢仅支持 CLI 的界面。我认为从一开始 Smalltalk 的最大优势就是它的 GUI 支持,如果你需要它,如果你使用的 Smalltalk 环境支持它,你可以使用 CLI,比如 Smalltalk/X-jv.

通常 inspect 是 Smalltalk 中使用的关键字,而不是 examine。这将为您提供对象的内部视图。

如果您想在命名空间中列出 类,您可以按以下方式进行:

NetClients do: [ :namespaceDetail | 
    namespaceDetail isClass ifTrue: [ namespaceDetail printNl ]
].

要打印 类 的描述,您可以这样:

NetClients do: [ :namespaceDetail | 
    namespaceDetail isClass ifTrue: [
        '--->' printNl. namespaceDetail printNl. '<---' printNl. 
        namespaceDetail comment printNl
    ]
].

以类似的方式你会得到选择器。