OneScript
OneScript copied to clipboard
Публичные и непубличные символы пакетов
Перекликается с задачей #253
Библиотека может иметь внутри себя служебные классы и модули, которые не нужны потребителю библиотеки. Но за счет того, что пространство имен единое - они будут видны. Нужны средства управления инкапсуляцией содержимого библиотеки.
иии тут мы опять приходим к тому, что обсуждали полгода назад.
#Использовать logos Экспорт;
Ну или наоборот private (как в typescript - свойство с необъявленной видимостью является публичным).
Я за предложение @nixel2007 Только по умолчанию приват, а не публик.
Только по умолчанию приват, а не публик.
только это внезапно обрушит все имеющиеся скрипты и библиотеки...
@nixel2007 логично. Значит, нужно будет сразу и их подправить, раз такой breaking change
@nixel2007 я вообще-то совсем не об этом... и вдобавок, не понял о чем говорите вы с @artbear
Я говорю о том, что сейчас в некоторой библиотеке может быть модуль "РаботаСHTTP", но он нужен для внутренних целей библиотеки и в клиентском скрипте не должен быть виден.
А теперь, поясните мне, плиз, о чем вы сейчас говорите?
@EvilBeaver ты предлагаешь регулировать это на уровне библиотеки/packagedef.. а я и Артур намекают на то, что это должно быть в самом движке у директив импорта.
Почему у импорта-то? Я импортирую пакет. Что я тут буду регулировать? Что означает то слово Экспорт в переписке выше?
@nixel2007 Да, я понял Андрея. Он внутри библиотеки хочет регулировать, что выдавать наружу. А мы с тобой говорили об использовании уже снаружи, т.е. позже. Здесь Экспорт уже не важен, все приватные классы,модули уже должны быть не видны.
@EvilBeaver т.е. к Классы и Модули добавляем еще два уровня рядом - ПриватныеКлассы и ПриватныеМодули, этим и достигается регулировка.
Ну а вы что имели в виду?
Я вообще не совсем про это.
Единственная возможность использовать РаботаСHTTP внутри скрипта - импортировать его через "Использовать". причем не важно, сторонняя ли это библиотека, подключаемая по имени, или файл в соседнем модуле, подключаемый по пути с переопределенным загрузчиком (как это сделано в gitsync, например). Суть одна - я импортирую библиотеку в текущий файл скрипта. Но я не хочу отдавать классы и методы, которые предоставляет эта импортируемая библиотека "наружу" - в скрипт, который будет импортировать уже мою библиотеку. Для этого я говорю: "уважаемый оскрипт (с) подгрузи мне вот эту туеву хучу методов только в мою область видимости" и пишу #use http private.
Моя хотелка реализована - внутри моей библиотеки я работаю с методами из РаботаСHTTP, а вызывающий мою библиотеку скрипт вообще ничего не знает про http.
Понял. Да это тоже надо. Но семантику видимостей нужно серьезно продумывать
2.0?