如何解决在 pharo 中,可以同时在操场和成绩单中运行代码什么时候做?
在 Pharo 中,通常在 Playground 中运行代码,并使用 Transcript 打印输出。但我注意到也可以在 Transcript 中运行代码,而不仅仅是在那里打印内容。例如,如果我输入:
Transcript clear.
在 Transcript 窗口内,按 Ctrl+D 运行它,该窗口将被清除。所以我的问题是,什么时候在 Transcript 窗口而不是 Playground 中运行代码有意义?有用例吗?
解决方法
为了回答你的问题,我们需要澄清一些事情:
您可以(几乎)在图像的任何位置运行任何代码。因此,如果您打开一个方法,例如,在某处键入 Transcript clear
,选择它并按 Ctrl+D,转录窗口将被清除。
成绩单只是一个链接到窗口的“单例”,可以轻松输出一些文本并在某处查看。自己构建一个类似的功能并不难,或者你甚至可以输出到一个文件。抄本只是为了在故障排除活动期间方便。我仍然建议首先使用调试器,但在某些情况下调试器可能不会切断它。
Playground 是一种旨在“玩”您的代码的工具。它与检查器配对,因此无论何时运行某些代码,您都可以以用户友好的方式检查生成的对象。还有一些其他功能,例如浏览变量绑定或存储代码片段,或浏览操场代码历史记录。正如我之前提到的,您可以在任何地方运行任何代码,但 Playground 已针对尝试进行了优化。
,Transcript 和 Playground 之间的一些差异
-
您可以从任何地方引用
Transcript
以在其上打印。您不能对 Playgrounds 做同样的事情。 -
由于
Transcript
是全局的,您的脚本可能会变脏或被清除。实际上,在Transcript
上打印警告信息之类的方法有很多。您可以通过搜索其参考资料找到它们。 -
临时文件会在 Playgrounds 中自动创建。您必须在
Transcript
脚本中明确声明它们。 -
在 Smalltalk 的某些方言中(不在 Pharo 中),关闭
Transcript
将关闭系统。游乐场(也称为工作区)可以在所有方言中自由打开和关闭。 -
Transcript
中有一个 Find 命令(猜猜为什么。) -
Transcript
是一个WriteStream
:它响应#nextPutAll:
、#flush
等。您可以使用它来测试旨在将内容转储到任何类流对象(例如,文件)。
上述 3 的重要结果是您可以将评估结果存储在 Playground 临时文件中。这些将一直可用,直到您关闭 Playground。相反,在 Transcript
中,任何临时的值只会在评估您的代码时持续存在,因此您将没有机会只能打印结果以使其保持可见,这比 Playground 行为要受限得多,您可以稍后回来检查或继续使用您的结果对象进行进一步实验。
在我看来,将 Playground 用于非平凡脚本并不是一个好主意。创建一个类并在其中放置一些方法要好得多。要尝试您的代码,请使用单元测试(同样是类和方法)。这样一来,代码就会有条理、可搜索、可分类等,而且您的“脚本”会变得很短,以至于您不需要任何 Playground。
Transcript
应该有两个区域。一个用于输出,另一个用于输入。输出区域将显示 Transcript show: <whatever>
和 Transcript nextPutAll: <string>
产生的消息、注释和结果。输入区域应该相当于一个简化的 Playground,这样您就可以省去打开 Playground 来评估您将很快丢弃的短代码片段的任务。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。