我试图解决文件的问题:咨询/ 1不允许元组在其中有趣,就像在这个例子中:
{add_one, fun(X) -> X+1 end}.
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,我正在考虑在字符串中编写乐趣并对其进行评估
{add_one, "fun(X) -> X+1 end"}.
Run Code Online (Sandbox Code Playgroud)
问题是.如何将字符串转换为有趣的?
Zed*_*Zed 11
parse_fun_expr(S) ->
{ok, Ts, _} = erl_scan:string(S),
{ok, Exprs} = erl_parse:parse_exprs(Ts),
{value, Fun, _} = erl_eval:exprs(Exprs, []),
Fun.
Run Code Online (Sandbox Code Playgroud)
请注意,在乐趣表达结束时需要一段时间,例如S = "fun(X) -> X + 1 end.".
file:script/1几乎可以做你想要的 - 它从文件中计算一系列erlang表达式并返回最后的结果.您可以使用它代替,file:consult/1但您需要从"term.term.term"更改文件的格式.给予[term, term ,term]"[期限,期限,期限]." 给出[term, term, term]- 在文件中放置单个表达式而不是序列.