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