English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Модули Erlang

Модуль — это набор функций, сгруппированных в один файл под одним именем. Кроме того, все функции в 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").

В этом коде определены две пользовательские свойства: author и version, которые используются для обозначения автора программы и версии.

Результат выполнения上面的 кода - '-'

Hello World

Предварительно встроенные свойства

Erlang имеет некоторые предварительно встроенные свойства, которые можно подключить к модулям, давайте посмотрим.

Экспорт

Экспортируемые свойства будут использоваться для экспорта списка функций и количества параметров в другие модули. Это определит интерфейс модуля. Мы видели это в предыдущем примере.

Синтаксис

export([FunctionName1/FunctionArity1,.,FunctionNameN/FunctionArityN])

Здесь:

  • FunctionName − Это имя функции в программе;

  • FunctionArity − Это количество параметров, связанных с функцией;

Пример

-module(helloworld). 
-author("TutorialPoint"). 
-version("1.0"). 
-export([start/0]). 
start() -> 
   io:fwrite("Hello World").

Результат выполнения上面的 кода - '-'

Hello World

Импорт

Свойства импорта используются для импорта функций из другого модуля для их использования в локальном контексте

Синтаксис

-import(modulename, [functionname/parameter]).

Здесь:

  • Modulename − Это имя модуля, который нужно импортировать

  • functionname/parameter − Это функция, которую нужно импортировать в модуль

Пример

-module(helloworld). 
-import(io,[fwrite/1]). 
-export([start/0]). 
start() -> 
   fwrite("Привет, мир!\n").

В上面的 коде мы используем ключевое слово 'import', чтобы импортировать библиотеку 'io', указав импортировать функцию 'fwrite'. Таким образом, теперь при вызове функции fwrite не нужно каждый раз указывать имя модуля.

Результат выполнения上面的 кода - '-'

Привет, мир!