我安装了Erlang/OTP和Elixir,并使用以下命令将HelloWorld程序编译成BEAM:
elixirc test.ex
Run Code Online (Sandbox Code Playgroud)
其中生成了一个名为Elixir.Hello.beam的文件
我该如何运行这个文件?
大多数语言都允许块注释和多行命令.
例如,HTML中的多行注释如下所示:
<!--
Warning, brave programmer:
Here be dragons.
-->
Run Code Online (Sandbox Code Playgroud)
在Elixir中,我发现的最接近的事情如下:
http://elixir-lang.org/docs/v1.0/eex/
EEx smartengine <% #comments %>似乎从源头被丢弃,即使它们是多线的.但是,这只是一种解决方法.
Elixir是否具有多行注释功能,或指示编译器从已编译的.beam文件中丢弃文本的方法?
我试图让多个选择与phoenix_html表单助手一起工作
<%= select f, :challenge_ids, ["foo": "1","bar": "2","baz": "3"], class: "form-control", multiple: "" %>
Run Code Online (Sandbox Code Playgroud)
但只有最后一个选定项目的id才会被发送到params中的服务器
%{"challenge_ids" => "3", "content" => "", "name" => ""}
Run Code Online (Sandbox Code Playgroud)
我也尝试过:challeng_ids改为:"challenge_ids[]"试图获得类似于多选标记的rails输出的东西,但这没有任何区别
我搜索package management上Erlang和Elixir并得到了一些指针rebar rebar3 mix hex和relx等,您可以帮助澄清它们之间的关系?哪里用什么?难道package只是同义词Erlang的application组成的modules?
Elixir新手在这里.我一直在尝试将KeywordList转换为字符串.我可以这样做
IO.inspect([name: "John Doe"])
Run Code Online (Sandbox Code Playgroud)
但它将字符串打印到控制台.是否有一个只返回字符串的函数?
每次修改源代码时如何自动重新编译和重新加载我的iex + mix应用程序?
如果iex + mix组合无法做到这一点,那么最简单的选择是什么?我已经检查了凤凰的重载方式,对我的小测试项目来说似乎并不容易实现.
我也知道José的.iex.exs:
defmodule R do
def reload! do
Mix.Task.reenable "compile.elixir"
Application.stop(Mix.Project.config[:app])
Mix.Task.run "compile.elixir"
Application.start(Mix.Project.config[:app], :permanent)
end
end
Run Code Online (Sandbox Code Playgroud)
我并不是非常高兴,因为它不会在代码更改时自动重新加载,我仍然需要输入R.reload!iex.
并且..请帮我在stackoverflow上创建"iex"标签,我的声誉还不够:)
Phoenix scrub_params方法的文档对我来说有点不清楚.看起来这个功能类似于Rails强参数功能.但是,当你在像这样的控制器中使用它时,
plug :scrub_params, "user" when action in [:create]
Run Code Online (Sandbox Code Playgroud)
...您没有明确说明要将哪些参数列入白名单.我已经查看了代码scrub_params,但是我对Elixir的说法非常苛刻,我不太确定发生了什么.
此方法只是查看模型并使用必需和可选的字段模块属性来列入白名单参数吗?
此外,scrub_params文档说"检查required_key是否存在".什么是"必需的钥匙"?这只是模型中的必填字段吗?
我的意思是如果字符串为空或仅包含空格,则该字符串为空.例如""," "并且"\n"都是空白.
在Rails中,我们有.blank?方法.
Elixir(或凤凰框架)中有类似的东西吗?
我有一些Javascript,我只想包含在我的Phoenix应用程序的某些页面上.
现在我已经在脚本标签中加入了Javascript myapp/web/templates/post/form.html.eex.
我知道我可以将JavaScript移动到web/static/js/app.js...但我不想在每个页面上包含Javascript(仅在2个特定页面上需要).
在我的应用程序中的某些页面上加载此部分Javascript而不重复代码并违反DRY原则的最佳方法是什么?
如何在Elixir中进行类似的条件性单行检查?
if (x > 0) ? x : nil
Run Code Online (Sandbox Code Playgroud)
这是elixir世界中唯一的等价物吗?
if true, do: 1, else: 2
Run Code Online (Sandbox Code Playgroud) elixir ×10
elixir-mix ×2
erlang ×2
comments ×1
ecto ×1
iex ×1
javascript ×1
multiline ×1
rebar ×1
relx ×1