gpt4 book ai didi

elixir - 如何将命令行参数传递给 mix run --no-halt

转载 作者:行者123 更新时间:2023-12-05 02:59:32 26 4
gpt4 key购买 nike

所以我有一个遵循此布局的应用程序模块:

defmodule Project.Application do


use Application

def start(_type, _args) do
children = [
randomchild1,
randomchild2,
{Project.runapp, "argument" }
]

opts = [strategy: :one_for_all, name: Project.Supervisor]
Supervisor.start_link(children, opts)
end
end

现在,当我运行它时,我使用 mix run --no-halt 并且它运行完美。

我想用我在命令行中传递的值替换“参数”?我不知道如何向 mix run --no-halt 添加参数。

我想要做的就是将一个值传递给 start 方法并使用它来定义子进程。

最佳答案

混合 voluntarily resets System.argv/1 . --no-halt 选项是运行应用程序的一种特殊方式;通常我们使用 mix release 组装版本并使用 ebin/my_app start 正常启动它们。

虽然您仍然想求助于 mix run --no-halt,但创建空文件(mix 将尝试在启动时执行它,)并调用 混合喜欢

mix run --no-halt -- "empty.exs" 42

现在在您的 Application.start/2 中,您可以使用 System.argv/0 获取参数

def start(_type, args) do
IO.inspect(System.argv())

...

检查它。

mix run --no-halt -- "empty.exs" 42
#⇒ ["422"]

关于elixir - 如何将命令行参数传递给 mix run --no-halt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57833079/

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