gpt4 book ai didi

elixir - 有根 Elixir 模块吗?

转载 作者:行者123 更新时间:2023-12-02 03:17:42 25 4
gpt4 key购买 nike

当我在 Elixir 中定义一个模块并在 IEX 中对其执行 to_string 操作时

MyModule |> to_string

我会得到结果

“Elixir.MyModule”

是否存在所有其他模块都存在的根级 Elixir 模块?为什么 Elixir 前缀看起来像另一个模块?

This website说它是一个命名空间,但我读过其他文章说 Elixir 不支持命名空间。

最佳答案

我相信这是为了区分 Elixir 和 Erlang 模块。所有 Elixir 模块均以 Elixir 前缀开头。MyModule 只是原子的别名 :"Elixir.MyModule":

iex(1)> defmodule MyModule, do: def f(), do: "MyModule.f()"

标准函数调用:

iex(2)> MyModule.f()
"MyModule.f()"

Erlang 风格的函数调用:

iex(3)> :"Elixir.MyModule".f()
"MyModule.f()"

原子等于别名吗?

iex(4)> :"Elixir.MyModule" == MyModule
true
iex(5)> :"Elixir.MyModule" == Elixir.MyModule
true

Elixir 前缀是为了方便:

iex(6)> MyModule == Elixir.MyModule
true

关于elixir - 有根 Elixir 模块吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51737948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com