是否可以启动交互式elixir shell并立即调用函数?

是否可以启动交互式elixir shell并立即调用函数?,elixir,elixir-iex,Elixir,Elixir Iex,在elixir中,您可以通过以下命令在应用程序的上下文中使用iexshell iex -S mix 这个命令非常方便,让我们可以在交互式shell中使用应用程序函数 我想知道是否可以用参数启动交互式shell,或者是否可以让应用程序在用户可以与shell交互之前调用一些函数 例如,假设我有一个名为MyApp的应用程序,我用iex-smix启动它。而不必手动将命令输入shell,例如 iex()>导入MyApp.Module iex()>别名MyApp.Module.OtheName iex()

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

iex -S mix
这个命令非常方便,让我们可以在交互式shell中使用应用程序函数

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

例如,假设我有一个名为
MyApp
的应用程序,我用
iex-smix
启动它。而不必手动将命令输入shell,例如

iex()>导入MyApp.Module
iex()>别名MyApp.Module.OtheName
iex()>value=OtherName.function(1234)

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

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

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


但请注意,如果您将特定于应用程序的代码放入此文件中,则只有在执行
iex-S mix
时,它才会正确运行,但在仅执行
iex
时,它不会正确运行。有趣的是,这与仅通过
iex scripts.exs
传递脚本名不同。传递脚本名不会保留指定的变量,但
.iex.exs
会保留指定的变量。您还可以使用
--dot iex
(奇怪的选项名称)自定义文件名。啊,我不知道
--dot iex
选项。非常有用。