Erlang &引用;字符串“u到”term/1“;?
Erlang中是否有具有此行为的函数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
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.