Elixir 理解别名

2023-12-15 14:38 更新

这时,你可能会想知道:究竟什么是Elixir中的别名,它是如何运作的?

Elixir中的别名是首字母大写的id(例如String,Keyword等等),在编译时会被转化成原子.举个例子,String别名默认转化成原子:"Elixir.String":

iex> is_atom(String)
true
iex> to_string(String)
"Elixir.String"
iex> :"Elixir.String" == String
true

使用​alias/2​命令,我们可以简单地修改别名要转化成的原子.

别名转化成原子是因为在Erlang虚拟机中模块总是用原子来代表.例如,这是我们调用Erlang模块的机制:

iex> :lists.flatten([1, [2], 3])
[1, 2, 3]

这也是我们之所以能动态地在一个模块中调用给定的函数:

iex> mod = :lists
:lists
iex> mod.flatten([1, [2], 3])
[1, 2, 3]

我们简单地使用原子​:list​调用了函数​flatten.


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号