有人能解释一下 Pharo 中的课程组织如何在不同版本的 Pharo 中工作吗?
- 所有类都是 Smalltalk 全球的一部分(一直是,似乎一直这样?)
- 类可以有一个类别,但那只是一种标签?(一直是,似乎一直这样?但有时类别会以某种方式映射到包?)
- 不同版本的Pharo有不同种类的包
- 代表蒙蒂塞洛包的 MCPackages
- 包信息
- RPackage(Pharo 1.4)?
此外还有 SystemNavigation 以某种方式帮助导航基于上述某些构造的类和方法?
有人能解释一下 Pharo 中的课程组织如何在不同版本的 Pharo 中工作吗?
此外还有 SystemNavigation 以某种方式帮助导航基于上述某些构造的类和方法?
课程
类是全局中的键这一事实Smalltalk
是一个实现细节。只要有一个用于类名的全局命名空间,实现很可能会保持不变。
班级类别
类类别很像一个标签。一个类一次只能属于一个类别。最初,类类别被用于Browser
组织系统中的类。
创建Monticello
时,类类别被重载以指示Monticello 包中的成员身份,MCPackage
并且PackageInfo
创建类来管理此映射。
PackageInfo
完成所有繁重的工作:找到属于一个包的类和松散的方法。
MCPackage
是一个特定于 Monticello 的包装器,PackageInfo
它添加了一些不一定适合更通用的PackageInfo
.
套餐
为包成员重载类类别是一种简化采用的巧妙技巧Monticello
(不需要教授现有的开发工具Monticello
),但是,它仍然是一个技巧。更不用说执行PackageInfo
效率不高的事实。
RPackage
创建是为了解决下一代开发工具的性能问题PackageInfo
并用作下一代开发工具的一部分。
这两个包实现将继续存在,直到PackageInfo
可以逐步淘汰。
系统导航
正如弗兰克所说,
SystemNavigation 是一个类,顾名思义,它允许轻松查询许多不同的事物:图像中的类、sender-of、implementors-of、有关图像中加载的包的信息等等。
至少目前,类是Smalltalk
字典中的键。
PackageInfo
包含有关一组类和对其他包的扩展的信息。
Monticello 包包含一个可部署的代码单元。通常其中之一将对应于一个PackageInfo
实例。(例如,在 Monticello 浏览器中点击“+Package”按钮将创建其中之一。)Monticello 包可能包含预加载和后加载脚本,因此这两个类执行单独的(如果相关)功能。
SystemNavigation
顾名思义,它是一个允许轻松查询许多不同事物的类:图像中的类、发送者、实现者、有关图像中加载的包的信息等等。