【问题标题】:Is it possible to launch an interactive elixir shell and call a function immediately?是否可以启动交互式 elixir shell 并立即调用函数?
【发布时间】:2019-08-28 18:13:47
【问题描述】:

在 elixir 中,您可以通过以下命令将 iex shell 与应用程序的上下文一起使用...

iex -S mix

这个命令非常方便,让我们可以在交互式 shell 中使用应用程序功能。

我想知道是否可以使用参数启动交互式 shell,或者是否可以让您的应用程序在用户与 shell 交互之前调用一些函数。

例如,假设我有一个名为MyApp 的应用程序,我以iex -S mix 开头。不必手动在 shell 中输入命令,例如

iex()> import MyApp.Module

iex()> alias MyApp.Module.OtheName

iex()> value = OtherName.function(1234)

有一种方法可以自动发生这种情况。

【问题讨论】:

    标签: elixir elixir-iex


    【解决方案1】:

    您可以在应用程序目录中创建一个文件.iex.exs,其中包含要在启动时运行的代码。来自iex的手册页:

    在 iex 启动后,它会查找文件 .iex.exs,如果是 成功,在 shell 的上下文中执行文件中的代码。 首先搜索从当前工作目录开始,然后,如果 必要时,它会在主目录中继续。

    但请注意,如果您将特定于应用程序的代码放入此文件中,则只有在执行 iex -S mix 时才会正确运行,而仅在执行 iex 时则不会正确运行。

    【讨论】:

    • 有趣的是,这与仅通过 iex scripts.exs 传递脚本名称的行为不同。传递脚本名称不会保留分配的变量,但 .iex.exs 会。您还可以使用--dot-iex(奇怪的选项名称)自定义文件名。
    • 啊,我不知道--dot-iex 选项。非常有用。
    猜你喜欢
    • 2011-04-16
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2012-08-23
    • 2017-10-17
    • 1970-01-01
    相关资源
    最近更新 更多