модули - ponyatov/nimbook GitHub Wiki
модули
Мы уже видели много примеров использования модулей из сторонних библиотек, но пока еще не понимаем, что такое модуль. Любой ваш файл client.nim
сам по себе является модулем, и вы также импортировали модули из библиотек на языке Nim в свой код, используя ключевое слово import
. Каждый компонент программы, который объединяет код для выполнения сходных действий и описания типов, в идеале должен быть написан в отдельного модуля, по у модульной структуры есть некоторые сложности по сравнению с кодом собранным в единственный файл.
Многие языки программирования используют модульную систему, и предоставляют средства для организации их совместного использования многими программистами. Основа системы модулей Nim довольно проста: каждый файл, заканчивающийся расширением .nim
, является модулем. Пока компилятор может найти файл, он может быть успешно импортирован. Что нельзя сказать о легкости доступа к начинке из соседних модулей.
Одним из преимуществ модульности является их взаимозаменяемость. Пока интерфейс модуля остается прежним, реализация может быть изменена. Например можно использовать две версии библиотеки для создания пользовательского интерфейса, одна из которых работает только в Linux-консоли, а вторая является обёрткой к графической части WinAPI.
По умолчанию всё, что вы определяете в модуле, является приватным -- к этим элементам кода можно получить доступ только внутри этого модуля. Закрытость таких определений гарантируют, что детали реализации модулей скрыты, в то время как публичные определения доступны другим модулям. Во многих языках для разграничения уровня доступа используются ключевые слова, в Nim достаточно поставить символ *
после имени, чтобы сделать его публичным.
На первый взгляд всё просто -- достаточно создать файл src/module.nim
, написать в нём пару процедур со звёйдочкой в имени, и подключить новый модуль через import module
.