在 gst(GNU smalltalk)中使用扩展 类?
Using extended classes in gst (GNU smalltalk)?
这是 的一个后续问题。
说我已经设法用新方法 'square' 扩展了 Integer class。现在我想用它。
从文件中调用新方法很简单:
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 文件来编辑加载到内核中的文件,但我没有这样的文件。
我不会编辑加载到内核中的内容。为了详细说明我的评论,除了使用图像文件之外,将以前创建的文件加载到 GNU Smalltalk 环境中的一种方法是使用 packages.
示例 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
,它将构建 .star
包文件并将其放入在 ~/.st
中(其中 gst
将首先查找包裹)。当您 运行 您的环境时,您可以使用 PackageLoader
将其加载到:
$ gst
GNU Smalltalk ready
st> PackageLoader fileInPackage: 'MyPackage'
Loading package PrerequisitePackage
Loading package MyPackage
PackageLoader
st>
那么您就可以开始摇滚了...:)
这是
说我已经设法用新方法 'square' 扩展了 Integer class。现在我想用它。
从文件中调用新方法很简单:
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 文件来编辑加载到内核中的文件,但我没有这样的文件。
我不会编辑加载到内核中的内容。为了详细说明我的评论,除了使用图像文件之外,将以前创建的文件加载到 GNU Smalltalk 环境中的一种方法是使用 packages.
示例 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
,它将构建 .star
包文件并将其放入在 ~/.st
中(其中 gst
将首先查找包裹)。当您 运行 您的环境时,您可以使用 PackageLoader
将其加载到:
$ gst
GNU Smalltalk ready
st> PackageLoader fileInPackage: 'MyPackage'
Loading package PrerequisitePackage
Loading package MyPackage
PackageLoader
st>
那么您就可以开始摇滚了...:)