Erlang字符串到原子和格式化字符串

gdrx4gfi  于 2022-12-08  发布在  Erlang
关注(0)|答案(4)|浏览(225)

仅使用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可以是原子或字符串。第三个参数始终是数字。

zzoitvuj

zzoitvuj1#

在Erlang中,原子以小写字母开头。对于以大写字母开头的原子,它必须用单引号括起来。
http://www.erlang.org/doc/reference_manual/data_types.html#id66663

9nvpjoqh

9nvpjoqh2#

如果你想得到一个字符串和整数的平面列表,使用~s~B可能很简单:

lists:flatten(io_lib:format("PUTVALUE ~s ~B", ["Hello", 40])).
yhxst69z

yhxst69z3#

您可以使用lists:concat来格式化此类字符串

lists:concat(["PUTVALUE ",hello," ",40]).
cbwuti44

cbwuti444#

Erlang原子总是必须以小写字母开头,这就是为什么当你试图创建一个以大写字母开头的原子时,它会给你一个不同的结果。它通过添加'引号来创建一个原子,因为大写的H。

相关问题