仅使用list_to_atom()
即可得到:
list_to_atom("hello").
hello
list_to_atom("Hello").
'Hello'
为什么会有差别呢?
我尝试用数字、字符串和原子来格式化字符串,如下所示:
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"
在Erlang中做这件事的最好方法是什么?
**编辑:**为了让问题更清楚,这里的值比上面的示例更多,在某些情况下,值可以是字符串或原子,如
lists:flatten(io_lib:format("PUTVALUE ~p ~p ~p", [list_to_atom("hello"), X, 40])).
其中,第一个参数始终是字符串,但X
可以是原子或字符串。第三个参数始终是数字。
4条答案
按热度按时间zzoitvuj1#
在Erlang中,原子以小写字母开头。对于以大写字母开头的原子,它必须用单引号括起来。
http://www.erlang.org/doc/reference_manual/data_types.html#id66663
9nvpjoqh2#
如果你想得到一个字符串和整数的平面列表,使用
~s
和~B
可能很简单:yhxst69z3#
您可以使用lists:concat来格式化此类字符串
cbwuti444#
Erlang原子总是必须以小写字母开头,这就是为什么当你试图创建一个以大写字母开头的原子时,它会给你一个不同的结果。它通过添加'引号来创建一个原子,因为大写的H。