使用just list_to_atom()
给出:
list_to_atom("hello").
hello
list_to_atom("Hello").
'Hello'
Run Code Online (Sandbox Code Playgroud)
为什么差异?
我正在尝试使用数字,字符串和原子格式化字符串,如下所示:
lists:flatten(io_lib:format("PUTVALUE ~p ~p", [list_to_atom("hello"), 40])).
"PUTVALUE hello 40"
lists:flatten(io_lib:format("PUTVALUE ~p ~p", [list_to_atom("Hello"), 40])).
"PUTVALUE 'Hello' 40"
Run Code Online (Sandbox Code Playgroud)
在Erlang中这样做的最佳方式是什么?
编辑:为了使问题清楚,有比上面的例子更多的值,在某些情况下,值可以是字符串或原子,如
lists:flatten(io_lib:format("PUTVALUE ~p ~p ~p", [list_to_atom("hello"), X, 40])).
Run Code Online (Sandbox Code Playgroud)
其中第一个参数始终是一个字符串,但X
可以是原子或字符串.第三个参数始终是一个数字.
Kem*_*lah 12
在Erlang中,原子以小写字母开头.对于以大写字母开头的atom,必须用单引号括起来.
http://www.erlang.org/doc/reference_manual/data_types.html#id66663
shi*_*ino 12
如果你想得到一个字符串和整数的平面列表,使用~s
和~B
可能是straitforward:
lists:flatten(io_lib:format("PUTVALUE ~s ~B", ["Hello", 40])).
Run Code Online (Sandbox Code Playgroud)
您可以使用list:concat来格式化这样的字符串
lists:concat(["PUTVALUE ",hello," ",40]).
Run Code Online (Sandbox Code Playgroud)