在gst中使用扩展类(GNU smalltalk)?

时间:2016-05-05 15:52:48

标签: smalltalk gnu-smalltalk

这是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文件来编辑加载到内核中的文件,但我没有这样的文件。

1 个答案:

答案 0 :(得分:3)

我不会编辑加载到内核中的内容。要详细说明我的注释,在使用图像文件之外,将以前创建的文件加载到GNU Smalltalk环境中的一种方法是使用packages

样本deviceready文件,根据文档定义包,如下所示:

package.xml

用于构建程序包的示例<package> <name>MyPackage</name> <!-- Include any prerequisite packages here, if you need them --> <prereq>PrequisitePackageName</prereq> <filein>Foo.st</filein> <filein>Bar.st</filein> </package> 可能如下所示:

Makefile

如果您的工作目录中包含# MyPackage makefile # PACKAGE_DIR = ~/.st PACKAGE_SPEC = package.xml PACKAGE_FILE = $(PACKAGE_DIR)/MyPackage.star PACKAGE_SRC = \ Foo.st \ Bar.st $(PACKAGE_FILE): $(PACKAGE_SRC) $(PACKAGE_SPEC) gst-package -t ~/.st $(PACKAGE_SPEC) Foo.st的上述文件,您可以执行Bar.st并构建make包文件并将其放入{ {1}}(其中.star将首先查找包裹)。运行环境时,可以使用~/.st将其加载到:

gst

然后你准备好摇摇晃晃......:)