English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Модуль — это набор функций, сгруппированных в один файл под одним именем. Кроме того, все функции в 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 не нужно каждый раз указывать имя модуля.
Результат выполнения上面的 кода - '-'
Привет, мир!