6

有人能解释一下 Pharo 中的课程组织如何在不同版本的 Pharo 中工作吗?

  • 所有类都是 Smalltalk 全球的一部分(一直是,似乎一直这样?)
  • 类可以有一个类别,但那只是一种标签?(一直是,似乎一直这样?但有时类别会以某种方式映射到包?)
  • 不同版本的Pharo有不同种类的包
    • 代表蒙蒂塞洛包的 MCPackages
    • 包信息
    • RPackage(Pharo 1.4)?

此外还有 SystemNavigation 以某种方式帮助导航基于上述某些构造的类和方法?

4

2 回答 2

5

课程

类是全局中的键这一事实Smalltalk是一个实现细节。只要有一个用于类名的全局命名空间,实现很可能会保持不变。

班级类别

类类别很像一个标签一个类一次只能属于一个类别。最初,类类别被用于Browser组织系统中的类。

创建Monticello时,类类别被重载以指示Monticello 包中的成员身份,MCPackage并且PackageInfo创建类来管理此映射。

PackageInfo完成所有繁重的工作:找到属于一个包的类和松散的方法。

MCPackage是一个特定于 Monticello 的包装器,PackageInfo它添加了一些不一定适合更通用的PackageInfo.

套餐

为包成员重载类类别是一种简化采用的巧妙技巧Monticello(不需要教授现有的开发工具Monticello),但是,它仍然是一个技巧。更不用说执行PackageInfo效率不高的事实。

RPackage创建是为了解决下一代开发工具的性能问题PackageInfo并用作下一代开发工具的一部分。

这两个包实现将继续存在,直到PackageInfo可以逐步淘汰。

系统导航

正如弗兰克所说,

SystemNavigation 是一个类,顾名思义,它允许轻松查询许多不同的事物:图像中的类、sender-of、implementors-of、有关图像中加载的包的信息等等。

于 2012-06-21T15:58:38.940 回答
4

至少目前,类是Smalltalk字典中的键。

PackageInfo包含有关一组类和对其他包的扩展的信息。

Monticello 包包含一个可部署的代码单元。通常其中之一将对应于一个PackageInfo实例。(例如,在 Monticello 浏览器中点击“+Package”按钮将创建其中之一。)Monticello 包可能包含预加载和后加载脚本,因此这两个类执行单独的(如果相关)功能。

SystemNavigation顾名思义,它是一个允许轻松查询许多不同事物的类:图像中的类、发送者、实现者、有关图像中加载的包的信息等等。

于 2012-06-21T12:12:58.420 回答