Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 获取伞形项目中的应用程序名称_Elixir - Fatal编程技术网

Elixir 获取伞形项目中的应用程序名称

Elixir 获取伞形项目中的应用程序名称,elixir,Elixir,我有一个伞形项目(我的应用程序)如下: ├── 自述文件 ├── 应用程序 │ ├── 应用程序1 │ | └── mix.exs │ ├── 附件二 | | └── mix.exs │ └── ... ├── 配置 └── mix.exs 我想获取当前正在运行的应用程序的名称, 例如:app\u one,app\u two 当我使用: Mix.Project.get.Project[:app] 我总是得到主项目名我的应用程序 我该怎么做?您可以使用:app

我有一个伞形项目(
我的应用程序
)如下:


├── 自述文件
├── 应用程序
│   ├── 应用程序1
│   |     └── mix.exs
│   ├── 附件二
|   |    └── mix.exs
│   └── ...
├── 配置
└── mix.exs

我想获取当前正在运行的应用程序的名称,
例如:
app\u one
app\u two

当我使用:
Mix.Project.get.Project[:app]

我总是得到主项目名
我的应用程序


我该怎么做?

您可以使用
:application.get\u application/1
获取a模块所属的应用程序。如果将
\uuuu模块\uuuu
作为第一个参数传递,则将获得当前模块所属的应用程序

$ cat apps/a/lib/a.ex
defmodule A do
  def hello do
    :application.get_application(__MODULE__)
  end
end
$ cat apps/b/lib/b.ex
defmodule B do
  def hello do
    :application.get_application(__MODULE__)
  end
end
$ iex -S mix
iex(1)> A.hello
{:ok, :a}
iex(2)> B.hello
{:ok, :b}

Erlang的
:application.get_application/1
application.get_application/1
。如果模块未在任何应用程序规范中列出,则返回
nil

iex> Application.get_application MyApp.ExistingModule
:my_app

iex> Application.get_application MyApp.NonExistingModule
nil

“当前正在运行”是指拥有您正在编写代码的模块的应用程序?例如,
app_one/***.ex
中的任何模块都应返回
:app_one
?通常是模块所在的应用程序。但是,例如,如果模块位于一个仅仅是库的应用程序中,并且由另一个应用程序使用,那么我想让该应用程序使用库(而不是库本身)。如果
app\u two
调用
app\u one
哪个调用库呢?现在
app\u two
正在使用
app\u one
app\u one
正在使用库。我想我想要app\u one。这是实际运行的应用程序(运行application.exs文件的应用程序),因为我希望当前运行的应用程序是第一个启动的应用程序。我建议您给出
:application.which|u application |>列表。首先
一个go,返回三个值的元组<代码>{:app'app',2.0.7'}
。但是请注意,当我们使用Erlang功能时,应用程序描述和版本将作为charlist返回。我不知道起跑顺序是否在任何情况下都可以信赖。到目前为止,它对我来说是可靠的。