📜  Elixir-模块(1)

📅  最后修改于: 2023-12-03 15:14:51.751000             🧑  作者: Mango

Elixir模块

Elixir是一种运行在Erlang虚拟机上的函数式编程语言,而模块是Elixir中最基本的单元。

创建一个模块

要创建一个新的模块,只需使用defmodule命令,后面跟着模块名和可选的参数,如下所示:

defmodule MyModule do
  # 模块代码放在这里
end
模块成员

一个模块可以包含以下成员:

函数

要在模块中定义一个函数,使用def命令,后面跟着函数名和可选参数,如下所示:

defmodule MyModule do
  def my_function(param1, param2) do
    # 函数代码放在这里
  end
end

要在模块中定义一个宏,使用defmacro命令,后面跟着宏名称和可选参数,如下所示:

defmodule MyModule do
  defmacro my_macro(param1, param2) do
    # 宏代码放在这里
  end
end
模块变量

要在模块中定义一个变量,使用@符号,后面跟着变量名和可选的初始值,如下所示:

defmodule MyModule do
  @my_variable "Hello, world!"
end
模块常量

要在模块中定义一个常量,使用defconst命令,后面跟着常量名称和可选的初始值,如下所示:

defmodule MyModule do
  defconst my_constant "Hello, world!"
end
导出

默认情况下,模块中的所有成员都是私有的,只能在模块内部使用。要将它们导出,以便在其他模块中使用,可以使用defdefmacrodefconst命令的export标志,如下所示:

defmodule MyModule do
  def my_function(param1, param2) do
    # 函数代码放在这里
  end

  defmacro my_macro(param1, param2) do
    # 宏代码放在这里
  end

  @my_variable "Hello, world!"

  defconst my_constant "Hello, world!"

  # 导出成员
  export [
    my_function: 2,
    my_macro: 2,
    @my_variable: 0,
    my_constant: 0
  ]
end
模块别名

为了避免在代码中使用长模块名,可以给模块设置一个别名。要设置一个别名,使用alias命令,如下所示:

alias MyModule, as: MM

现在可以在代码中使用MM来引用MyModule

总结

模块是Elixir中最基本的单元,它可以包含函数、宏、变量和常量。要导出模块成员,使用export标志。要设置模块别名,使用alias命令。