Erlang &引用;字符串“u到”term/1“;?

Erlang &引用;字符串“u到”term/1“;?,erlang,type-conversion,Erlang,Type Conversion,Erlang中是否有具有此行为的函数 a_function_id_like_to_have("{1,2,{3,4}}") % => {1,2,{3,4}} (如哈斯克尔的阅读)看一看第25张幻灯片 它利用了,和 您可以简单地使用和 确保Str以点结尾。您可以查看,从otp src代码中获取。如果您正在阅读文件中的术语,可以使用file:consult;只需确保检查输入,因为它可以包含任何有效的Erlang表达式,例如Erlang:halt()。从这个意义上讲,它的行为与file:cons

Erlang中是否有具有此行为的函数

a_function_id_like_to_have("{1,2,{3,4}}") % => {1,2,{3,4}}

(如哈斯克尔的
阅读

看一看第25张幻灯片

它利用了,和

您可以简单地使用和


确保
Str
以点结尾。

您可以查看,从otp src代码中获取。如果您正在阅读文件中的术语,可以使用file:consult;只需确保检查输入,因为它可以包含任何有效的Erlang表达式,例如
Erlang:halt()。
从这个意义上讲,它的行为与
file:consult/1
有很大不同。
1> {ok, Tokens, _} = erl_scan:string("{1,2,{3,4}}.").
{ok,[{'{',1},
     {integer,1,1},
     {',',1},
     {integer,1,2},
     {',',1},
     {'{',1},
     {integer,1,3},
     {',',1},
     {integer,1,4},
     {'}',1},
     {'}',1},
     {dot,1}],
    1}
2> {ok, Abstract} = erl_parse:parse_exprs(Tokens).
{ok,[{tuple,1,
            [{integer,1,1},
             {integer,1,2},
             {tuple,1,[{integer,1,3},{integer,1,4}]}]}]}
3> Bindings = erl_eval:new_bindings().
[]
4> {value, Value, _} = erl_eval:exprs(Abstract, Bindings).
{value,{1,2,{3,4}},[]}
5> erlang:display(Value).
{1,2,{3,4}}
true
string_to_term(Str) ->
    {ok, Tokens, _} = erl_scan:string(Str),
    {ok, Term} = erl_parse:parse_term(Tokens),
    Term.