【发布时间】:2016-08-31 11:55:46
【问题描述】:
这是this one 的后续问题。
假设我已经设法使用新方法“square”扩展了 Integer 类。现在我想用它。
从文件中调用新方法很简单:
Integer extend [
square [
| r |
r := self * self.
^r
]
]
x := 5 square.
x printNl.
在这里,我可以在 bash 中调用 $ gst myprogram.st,它会打印 25。但是如果我想在 GNU smalltalk 应用程序中使用该方法怎么办?像这样:
$ gst
st> 5 square
25
st>
这可能与图像有关,我不确定。 This tutorial 说我可以编辑 ~/.st/kernel/Builtins.st 文件来编辑加载到内核中的文件,但我没有这样的文件。
【问题讨论】:
-
我编辑了标题以表明问题是关于
gst并删除了bash 标签,因为这与bash没有任何关系。 -
如果该文件不存在,那么您可以直接创建它。虽然给出了链接,但您可能希望/需要将默认链接复制到那里并进行编辑,而不是创建一个空链接。
-
不幸的是,GNU Smalltalk 没有
FileLoader方法,尽管我认为我读到他们正在考虑它。与此同时,我所做的是收集扩展并将它们放入package。然后您可以使用PackageLoader加载类。如果我更改源,我使用Makefile和gst-package来重建包。正如您所说,另一种选择是将其保存为图像文件并在需要时重新加载图像文件。一旦你使用包进行设置,就很容易了。 -
顺便说一句,在链接参考中,它建议您可以将
square方法缩短为square [ ^self * self ]。不需要额外的变量。