Smalltalk Metacello中的#includes:指令是什么?

Smalltalk Metacello中的#includes:指令是什么?,smalltalk,pharo,metacello,Smalltalk,Pharo,Metacello,我不明白下面的摘录。更准确地说,#包含的内容:指令并不清楚,因为它看起来与#要求的内容完全相反: spec for: #'pharo3.x' do: [ spec package: 'Grease-Core' with: [ spec includes: #('Grease-Pharo30-Core' ). ]; package: 'Grease-Tests-Core' with: [ spec inclu

我不明白下面的摘录。更准确地说,
#包含的内容:
指令并不清楚,因为它看起来与
#要求的内容完全相反:

spec for: #'pharo3.x' do: [
    spec 
        package: 'Grease-Core' with: [
            spec includes: #('Grease-Pharo30-Core' ). ];
        package: 'Grease-Tests-Core' with: [
            spec includes: #('Grease-Tests-Pharo20-Core' ). ];
        package: 'Grease-Pharo30-Core' with: [
            spec requires: #('Grease-Core' ). ];
        package: 'Grease-Tests-Pharo20-Core' with: [
            spec requires: #('Grease-Tests-Core' ) ] ].

它与需求相反,但它做得更多。如果
A需要:B
并且
B包括:A
, 然后加载
B
会产生效果,即
A
也会在加载
B
之后加载(因为
需要

我和戴尔讨论过这种行为。最后,这是一个命名问题。在debian世界中,您可以使用类似于
#provides:
(它不存在),您可以编写

A provides: B
但是,仍然
A需要:B
这一事实不会反映在这里

TL;博士
A包含:B
时,加载
A
也会加载
B
,从您的解释中,我得到
包含的内容:
没有,但它与
要求的区别:
。因此,
A需要:B
说:“如果加载
A
,您以前必须加载
B
”但是
A包括:B
表示“如果要加载
A
,还必须加载
B