我在“web / templates / module / headerHC.html.eex”中有这个:
<%= for element <- MyProject.PageView.Recursion.buildElements(@header_linkNumber),1) do %>
<%= element %>
<% end %>
然后,我在“web / layout / HC.html.eex”中使用此组件:
<%= render FabricaASA.ModuleView, "headerHC.html", conn: @conn,
header_class: nil,
header_linkNumber: "3"
%>
最后我在“web / views / page_view.ex”中定义了:
defmodule Recursion do
def buildElements(n) when n <= 1 do
[n]
end
def buildElements(n) do
[n | buildElements(n - 1)]
end
end
问题是我收到了这个错误:
bad argument in arithmetic expression
指向这一行:
def buildElements(n) when n <= 1 do
当我插入@header_linkNumber
而非<%= for element <- MyProject.PageView.Recursion.buildElements(2),1) do %>
我已经尝试使用@MyProject.ModuleView.header_linkNumber
,但后来我收到了这个错误:
cannot set attribute @__aliases__ inside function/macro
答案 0 :(得分:1)
当您从字符串中减去一个整数时,您将获得“算术表达式中的错误参数”:
*{
margin:0;
padding:0;
}
变化:
iex> "3" - 1
** (ArithmeticError) bad argument in arithmetic expression
:erlang.-("3", 1)
要:
header_linkNumber: "3"
作为一个有趣的旁注,您实际上可以将字符串与整数进行比较:
header_linkNumber: 2
你应该知道这一点,因为如果你在其他地方使用字符串而不是整数,它可能会导致意外错误。
订单(来自http://elixir-lang.org/getting-started/basic-operators.html)是:
数字&lt;原子&lt;参考&lt;功能&lt;港口&lt; pid&lt;元组&lt;地图&lt;列表&lt;位串