运行Elixir应用程序的正确方法是什么?
我正在创建一个简单的项目:
mix new app
Run Code Online (Sandbox Code Playgroud)
然后我可以这样做:
mix run
Run Code Online (Sandbox Code Playgroud)
这基本上编译了我的应用程序一次.所以当我添加:
IO.puts "running"
Run Code Online (Sandbox Code Playgroud)
在lib/app.ex我看到的"running"仅是第一次,每次连续run做什么,除非有一些变化.生成后我可以做什么app.app?
我当然知道我能做到:
escript: [main_module: App]
Run Code Online (Sandbox Code Playgroud)
in mix.exs,提供def main(args):然后:
mix escript.build
./app
Run Code Online (Sandbox Code Playgroud)
但在我看来,它有点麻烦.
还有类似的东西:
elixir lib/app.exs
Run Code Online (Sandbox Code Playgroud)
但它mix.exs显然不算数,这是我的依赖所需要的app.
这看起来很简单,但我似乎无法在文档中找到它.我需要简单地返回true或者false如果项目存在于列表或元组中.是Enum.find/3真正做到这一点的最好方法是什么?
Enum.find(["foo", "bar"], &(&1 == "foo")) != nil
Run Code Online (Sandbox Code Playgroud) Elixirs文档声明
除了Elixir文件扩展名.ex之外,Elixir还支持.exs文件以进行脚本编写.Elixir以完全相同的方式处理两个文件,唯一的区别在于意图..ex文件用于编译,而.exs文件用于编写脚本,无需编译.
但我仍然不确定何时使用哪种文件类型..ex和.exs的缺点和目的是什么?
当我使用IEx并输入类似于额外括号的拼写错误或",那么大多数时候我会收到语法错误.但是有类似这样的情况:
iex(3)> Enum.each '12345', &(IO.puts(&1"))
...(3)> end
...(3)> )
...(3)> '
...(3)> end
...(3)> ""
...(3)> ... ? How to produce syntax error ?
...(3)>
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
(v)ersion (k)ill (D)b-tables (d)istribution
Run Code Online (Sandbox Code Playgroud)
我不能发出语法错误并从头开始继续我必须重新启动整个IEx.是否有任何键盘快捷键或命令跳过执行当前iex(3)并转到下一个iex(4)?
这似乎是一个非常愚蠢的问题,但是如何获得并显示Elixir中的当前日期或时间?我试过浏览文档但找不到任何东西.我需要使用Erlang功能吗?
我知道可以创建一个struct via %User{ email: 'blah@blah.com' }.但是,如果我有一个变量params = %{email: 'blah@blah.com'},有一种方法可以使用该变量创建该结构,例如,%User{ params }.
这给出了一个错误,只是想知道你是否可以爆炸它或其他方式?
在Dave Thomas的书"编程Elixir"中,他指出"Elixir强制执行不可变数据"并继续说:
在Elixir中,一旦变量引用了诸如[1,2,3]之类的列表,您就会知道它将始终引用那些相同的值(直到您重新绑定变量).
这听起来像"除非你改变它,否则它不会改变"所以我对可变性和重新绑定之间的区别感到困惑.突出差异的一个例子非常有用.
我正在寻找一个IDE,它至少可以解决以下问题
.如果它也可能会很好
我刚开始使用Elixir,并开始了一个凤凰项目,我非常喜欢.现在有了rails后台,我习惯于被调试工具所破坏,比如"debugger","byebug"等等; 我想知道Elixir是否有类似的工具?你们是如何调试Elixir应用程序的?
甚至相当于Rubys raise my_object.inspect,也会有奇迹!
谢谢