Модули — это набор функций, сгруппированных в одном файле под одним именем. Кроме того, все функции в Erlang должны быть определены в модулях.
Большинство основных функций, таких как арифметические, логические и логические операторы, уже доступны, поскольку модули по умолчанию загружаются при запуске программы. Любая другая функция, определенная в модуле, который вы когда-либо будете использовать, должна вызываться в форме Module: Function (Arguments).
Определение модуля
С помощью модуля вы можете объявить два вида вещей: функции и атрибуты. Атрибуты — это метаданные, описывающие сам модуль, такие как его имя, функции, которые должны быть видны внешнему миру, автор кода и так далее. Этот тип метаданных полезен, потому что он дает советы компилятору о том, как он должен выполнять свою работу, а также потому, что он позволяет людям получать полезную информацию из скомпилированного кода без необходимости обращаться к источнику.
Синтаксис объявления функции следующий:
Синтаксис
-module(modulename)
Где modulename — это имя модуля. Это должна быть первая строка кода в модуле.
Следующая программа показывает пример модуля с именем helloworld .
пример
-module(helloworld). -export([start/0]). start() -> io:fwrite("Hello World").
Выход вышеуказанной программы —
Выход
Hello World
Атрибуты модуля
Атрибут модуля определяет определенное свойство модуля. Атрибут модуля состоит из тега и значения.
Общий синтаксис атрибута —
Синтаксис
-Tag(Value)
Пример использования атрибута показан в следующей программе:
пример
-module(helloworld). -author("TutorialPoint"). -version("1.0"). -export([start/0]). start() -> io:fwrite("Hello World").
Вышеуказанная программа определяет 2 пользовательских атрибута, называемых автором и версией, которые содержат автора и номер версии программы соответственно.
Выход вышеуказанной программы —
Выход
Hello World
Предварительно построенные атрибуты
Erlang имеет несколько встроенных атрибутов, которые можно прикрепить к модулям. Давайте посмотрим на них.
экспорт
Атрибут export будет принимать список функций и артиклей для экспорта для потребления другими модулями. Это определит интерфейс модуля. Мы уже видели это во всех наших предыдущих примерах.
Синтаксис
export([FunctionName1/FunctionArity1,.,FunctionNameN/FunctionArityN])
Куда,
-
FunctionName — это имя функции в программе.
-
FunctionArity — количество параметров, связанных с функцией.
FunctionName — это имя функции в программе.
FunctionArity — количество параметров, связанных с функцией.
пример
-module(helloworld). -author("TutorialPoint"). -version("1.0"). -export([start/0]). start() -> io:fwrite("Hello World").
Выход вышеупомянутой программы будет —
Выход
Hello World
Импортировать
Атрибут import используется для импорта функций из другого модуля, чтобы использовать его как локальный.
Синтаксис
-import (modulename , [functionname/parameter]).
Куда,
-
Modulename — это имя модуля, который необходимо импортировать.
-
имя функции / параметр — функция в модуле, которую необходимо импортировать.
Modulename — это имя модуля, который необходимо импортировать.
имя функции / параметр — функция в модуле, которую необходимо импортировать.
пример
-module(helloworld). -import(io,[fwrite/1]). -export([start/0]). start() -> fwrite("Hello, world!\n").
В приведенном выше коде мы используем ключевое слово import для импорта библиотеки ‘io’ и, в частности, функцию fwrite. Поэтому теперь, когда мы вызываем функцию fwrite, нам не нужно нигде упоминать имя модуля io.
Выход вышеупомянутой программы будет —