erlang 列表中的编号打印为"\f"

ecfsfe2w  于 2022-12-08  发布在  Erlang
关注(0)|答案(2)|浏览(160)

我试图学习Erlang,并没有得到进一步比运算符时,我遇到了一个问题:

5> TheList = [2,4,6,8]. 
[2,4,6,8]
6> 
6> [N || N <- TheList, N rem 3 =:= 0]. 
[6]
7> 
7> TheList. 
[2,4,6,8]
8> 
8> [2*N || N <- TheList, N rem 3 =:= 0]. 
"\f"
9>

为什么我在最后一个操作中得到"\f"?它不应该是[12]吗?"\f"是什么意思?谢谢。

7ivaypg9

7ivaypg91#

下面举例说明:
Erlang没有单独的字符串类型。字符串通常由整数列表表示(标准库的字符串模块操作这样的列表)。每个整数代表字符串中字符的ASCII(或其他字符集编码)值。为了方便起见,用双引号(“)括起来的字符串相当于这些字符的数值列表。
您可以使用io:format函数:

1> io:format("~w~n", [[2*N || N <- [2,4,6,8], N rem 3 =:= 0]]).
[12]

或者使用以Erlang R16 B开头shell:strings/1函数禁用此行为:

2> shell:strings(false).
true
3> [2*N || N <- [2,4,6,8], N rem 3 =:= 0].
[12]
snvhrwxg

snvhrwxg2#

正如@Atomic_alarm在注解中提到的,这是由于Erlang使用字符串语法而不是整数列表打印出答案。默认值为true,而对于[12],您希望将该值设置为false。有关它的文档在这里。

相关问题