Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Публичные и непубличные символы пакетов #268

Open
EvilBeaver opened this issue Jun 3, 2016 · 13 comments

Comments

@EvilBeaver
Copy link
Owner

Перекликается с задачей #253

Библиотека может иметь внутри себя служебные классы и модули, которые не нужны потребителю библиотеки. Но за счет того, что пространство имен единое - они будут видны. Нужны средства управления инкапсуляцией содержимого библиотеки.

@nixel2007
Copy link
Collaborator

иии тут мы опять приходим к тому, что обсуждали полгода назад.

#Использовать logos Экспорт;

Ну или наоборот private (как в typescript - свойство с необъявленной видимостью является публичным).

@artbear
Copy link
Collaborator

artbear commented Jun 3, 2016

Я за предложение @nixel2007
Только по умолчанию приват, а не публик.

@nixel2007
Copy link
Collaborator

Только по умолчанию приват, а не публик.

только это внезапно обрушит все имеющиеся скрипты и библиотеки...

@artbear
Copy link
Collaborator

artbear commented Jun 3, 2016

@nixel2007 логично.
Значит, нужно будет сразу и их подправить, раз такой breaking change

@EvilBeaver
Copy link
Owner Author

@nixel2007 я вообще-то совсем не об этом... и вдобавок, не понял о чем говорите вы с @artbear

Я говорю о том, что сейчас в некоторой библиотеке может быть модуль "РаботаСHTTP", но он нужен для внутренних целей библиотеки и в клиентском скрипте не должен быть виден.

А теперь, поясните мне, плиз, о чем вы сейчас говорите?

@nixel2007
Copy link
Collaborator

@EvilBeaver ты предлагаешь регулировать это на уровне библиотеки/packagedef.. а я и Артур намекают на то, что это должно быть в самом движке у директив импорта.

@EvilBeaver
Copy link
Owner Author

Почему у импорта-то? Я импортирую пакет. Что я тут буду регулировать? Что означает то слово Экспорт в переписке выше?

@artbear
Copy link
Collaborator

artbear commented Jun 3, 2016

@nixel2007
Да, я понял Андрея. Он внутри библиотеки хочет регулировать, что выдавать наружу.
А мы с тобой говорили об использовании уже снаружи, т.е. позже. Здесь Экспорт уже не важен, все приватные классы,модули уже должны быть не видны.

@artbear
Copy link
Collaborator

artbear commented Jun 3, 2016

@EvilBeaver т.е. к Классы и Модули добавляем еще два уровня рядом - ПриватныеКлассы и ПриватныеМодули, этим и достигается регулировка.

@EvilBeaver
Copy link
Owner Author

Ну а вы что имели в виду?

@nixel2007
Copy link
Collaborator

Я вообще не совсем про это.

Единственная возможность использовать РаботаСHTTP внутри скрипта - импортировать его через "Использовать". причем не важно, сторонняя ли это библиотека, подключаемая по имени, или файл в соседнем модуле, подключаемый по пути с переопределенным загрузчиком (как это сделано в gitsync, например). Суть одна - я импортирую библиотеку в текущий файл скрипта. Но я не хочу отдавать классы и методы, которые предоставляет эта импортируемая библиотека "наружу" - в скрипт, который будет импортировать уже мою библиотеку. Для этого я говорю: "уважаемый оскрипт (с) подгрузи мне вот эту туеву хучу методов только в мою область видимости" и пишу #use http private.

Моя хотелка реализована - внутри моей библиотеки я работаю с методами из РаботаСHTTP, а вызывающий мою библиотеку скрипт вообще ничего не знает про http.

@EvilBeaver
Copy link
Owner Author

Понял. Да это тоже надо. Но семантику видимостей нужно серьезно продумывать

@nixel2007
Copy link
Collaborator

2.0?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants