这是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文件来编辑加载到内核中的文件,但我没有这样的文件。
答案 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
然后你准备好摇摇晃晃......:)