LINUX.ORG.RU

отличие кефира от клейстера понимаешь?

anonymous
()

смотри:

есть namespace «Гарри Поттер», в это пространство имён (вселенную) входят packages:

  • Гарри Поттер и философский камень
  • Гарри Поттер и тайная комната
  • Гарри Поттер и узник Азкабана
  • Гарри Поттер и Кубок огня
  • Гарри Поттер и орден Феникса
  • Гарри Поттер и Принц-полукровка
  • Гарри Поттер и Дары Смерти: Часть I
  • Гарри Поттер и Дары Смерти: Часть II

есть namespace «Властелин колец», в это пространство имён (вселенную) входят packages:

  • Властелин колец: Братство кольца
  • Властелин колец: Две крепости
  • Властелин колец: Возвращение Короля

к примеру, ещё есть namespaces: «Star wars», «Star Trek», «Alien» или «Babilon 5», со своими packages

anonymous
()
Ответ на: смотри: от anonymous

А почему «Гарри Поттер и философский камень» не может быть вложенным namespace? Что такое package в данном контексте?

Bobby_
() автор топика
Ответ на: смотри: от anonymous

неверно.

если гарри поттер, а в нём: первая серия, вторая серия и т.д.

а есть старварс, в них: четвёртая серия, пятая, шестая, первая, вторая и третья.

у тебя дома диск со всеми сериями старварс и ты такой: посмотрю как я первую серию! и смотришь именно старварс, а не гарри поттера, потому что у тебя нет диска с гарри поттером.

anonymous
()
Ответ на: комментарий от Bobby_

если реализация позволяет, то может быть и вложенным, например, в случае несостыковок/изменения сюжета, хронологии или судьбы героев

package, в данном контексте, формируют контекст и доставляют изменения

anonymous
()
Ответ на: комментарий от anonymous

Почему нельзя сказать:

«Гарри Поттер»::«Гарри Поттер и философский камень»::часть1?

Каждая часть формирует контекст, либо весь фильм, либо часть. В чем отличие package?

Bobby_
() автор топика
Ответ на: комментарий от anonymous

вообще-то, для того абстракция «namespace» и придумывалась, чтоб «меч» из «Властелин колец» не конфликтовал со своим тёзкой из «Star wars»

и если у меня дома диск|диски (packages) со всеми сериями чего-то, и я такой: «посмотрю-ка я первую серию!» — то, в контексте физического наличия|доставки этого чего-то (package), мне придётся смотреть первую серию того пространства имён, что имеется в наличии, т.к. другое не завезли

anonymous
()
Ответ на: комментарий от Bobby_

Я вообще хочу понять namespace в С++ и package в других языках это одно и тоже?

Если конкретно с CL defpackage сравнивать, то package CL является объектом первого класса. Во время работы программы можно узнать какие имена в нём есть и даже добавить новые. В C++ namespace существует только во время компиляции.

Если «package в других языках», то в racket, например, словом package обозначают не пространство имён, а библиотеку, в которой может быть несколько независимых пространств имён или даже другой синтаксис для языка.

monk ★★★★★
()
Ответ на: комментарий от Bobby_

можно, например, в Tcl/Tk

https://www.tcl.tk/man/tcl8.6/TclCmd/namespace.htm http://wiki.tcl.tk/1489

https://www.tcl.tk/man/tcl8.6/TclCmd/package.htm https://wiki.tcl.tk/1491

в других языках, может быть интересен вопрос в изоляции namespaces друг от друга в главном процессе, а также переключение контекстов

распространённый вариант — обеденный стол и твоя тарелка: на столе много блюд, и в свою тарелку ты накладываешь то, что собираешься использовать, но, не бери много и будь аккуратен — суп жидкий (и нужен ли тебе весь суп?), лапша длинная, а молоко не нужно мешать с соленьями

есть и другие варианты, например: идёшь ты по улице (нулевой контекст), подходишь к уличному торговцу (подключаешь дополнительный контекст), отходишь (отключаешь дополнительный контекст) и заходишь в парикмахерскую (переключаешься на новый первый контекст), где немного меняют тебе внешний вид, затем, выходишь (переключаешься на нулевой контекст) изменённый ты на улицу (тут тоже могут изменить тебе внешность, но по-другому), идешь дальше и заходишь в магазин (меняешь на второй контекст), где приобретаешь несколько вещей, выходишь (нулевой контекст) и идёшь далее с ними, и, весь такой подготовленный, заваливаешься в клуб (переключаешься на третий контекст), но твой инстанс должен быть совместим с этими изменениями и контекстами, в идеале — ты путешествуешь по контекстам: дом, день, учёба, работа, отдых, ночь, улица, фонарь, аптека и т.д., например, манипуляции «Word Lists» в Forth: https://www.complang.tuwien.ac.at/forth/gforth/Docs-html/Word-Lists.html

В чем отличие package?

во-первых, «отличие от чего?»,
во-вторых, «от реализации зависит», к примеру, каждый package может формировать свой namespace, а может и не формировать

anonymous
()
Ответ на: комментарий от Bobby_

Я вообще хочу понять namespace в С++ и package в других языках это одно и тоже?

зависит от языка, нужно рассматривать конкретную реализацию — что имел ввиду автор

anonymous
()
Ответ на: комментарий от monk

namespace существует только во время компиляции

А как работают библиотеки если в них нет инфы о namespace?

Как линкер разрешит ссылку namespace1::fun (int i)?

Bobby_
() автор топика
Ответ на: комментарий от Bobby_

Как линкер разрешит ссылку namespace1::fun (int i)?

У линкера после компиляции будет что-то вроде _ZN10namespace13funEi и именно это имя он будет разрешать.

monk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.