Как сделать Пакет с подгруппами в Pharo 9

Как в Pharo 9 создать пакет с иерархией подпакетов, как в «Объявлениях-Ядро», где есть раскрывающаяся и сворачивающаяся стрелка?

Как сделать Пакет с подгруппами в Pharo 9

Я думал, что это может быть основано на именах пакетов, но когда я попытался со следующими сообщениями создать два класса, они просто отображаются как отдельные пакеты. Я хочу, чтобы был пакет «T-base», в котором есть подпакеты «type1» и «type2»?

Object subclass: #T1 instanceVariableNames: '' classVariableNames: '' package: 'T-base-type1'
Object subclass: #T2 instanceVariableNames: '' classVariableNames: '' package: 'T-base-type2'
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
32
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Чтобы создать новый пакет и (так называемый) тег внутри него, используйте пункты контекстного меню New package и New tag. Пакеты — это экземпляры RPackage и теги ClyTaggedClassGroup.

Может быть, предложение, объясняющее, как тег влияет на иерархию пакетов (о чем был вопрос), было бы полезно, Леандро? :-)

Amos M. Carpenter 21.03.2022 01:54
Ответ принят как подходящий

Чтобы добавить к ответу Леандро, чтобы сделать это в коде 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'.

Пожалуйста, примите это, ваш ответ.

Leandro Caniglia 21.03.2022 14:44

Другие вопросы по теме