Как в Pharo 9 создать пакет с иерархией подпакетов, как в «Объявлениях-Ядро», где есть раскрывающаяся и сворачивающаяся стрелка?
Я думал, что это может быть основано на именах пакетов, но когда я попытался со следующими сообщениями создать два класса, они просто отображаются как отдельные пакеты. Я хочу, чтобы был пакет «T-base», в котором есть подпакеты «type1» и «type2»?
Object subclass: #T1 instanceVariableNames: '' classVariableNames: '' package: 'T-base-type1'
Object subclass: #T2 instanceVariableNames: '' classVariableNames: '' package: 'T-base-type2'
Чтобы добавить к ответу Леандро, чтобы сделать это в коде smalltalk, вы можете сделать это:
t1 := Object subclass: #T1
instanceVariableNames: ''
classVariableNames: ''
package: 'T-base-type1'.
t2 := Object subclass: #T2
instanceVariableNames: ''
classVariableNames: ''
package: 'T-base-type2'.
t1 class package addClassDefinition: t1 toClassTag: #type1.
t2 class package addClassDefinition: t2 toClassTag: #type2.
t1 class package
дает вам экземпляр RPackage
, после чего вы можете добавить класс в тег. Я также обнаружил, что вам нужно, чтобы последняя часть имени пакета (например, type1) совпадала с именем тега, в противном случае возникает ошибка, что класс «некатегоризирован».
Есть и другой способ: вы можете создать класс без последней части имени пакета, а затем отправить классу сообщение category:
, чтобы добавить его в
t1 := Object subclass: #T1
instanceVariableNames: ''
classVariableNames: ''
package: 'T-base'.
t1 category: 'T-base-type1'.
Пожалуйста, примите это, ваш ответ.
Может быть, предложение, объясняющее, как тег влияет на иерархию пакетов (о чем был вопрос), было бы полезно, Леандро? :-)