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

Dam*_*sou 4 smalltalk pharo metacello

我不明白以下摘录.更确切地说,目前还不清楚该#includes:指令是什么,因为它看起来与其相反#requires:.

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' ) ] ].
Run Code Online (Sandbox Code Playgroud)

Tob*_*ias 7

它与要求相反,但它做得更多.如果A requires: BB includes: A,然后加载B效果,A也加载(因为#includes:)B加载后(因为#requires).

我与戴尔讨论了这种行为.最后,这是一个命名问题.在debian World中,你会使用类似的东西#provides:(不存在),你可以写

A provides: B
Run Code Online (Sandbox Code Playgroud)

但是,事实仍然A requires: B不会反映在那里.

TL; DR

何时A includes: B,然后加载A也加载B.

  • 所以,`A要求:B`说:"如果加载`A`,你以前必须加载`B`."但是`A包括:B`说"如果你想加载'A`,你_also_必须加载'B`" (3认同)
  • 从你的解释我得到什么'包括:`做但不是什么区别于`要求:`. (2认同)