我试图学习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"是什么意思?谢谢。
"\f"
[12]
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]
snvhrwxg2#
正如@Atomic_alarm在注解中提到的,这是由于Erlang使用字符串语法而不是整数列表打印出答案。默认值为true,而对于[12],您希望将该值设置为false。有关它的文档在这里。
2条答案
按热度按时间7ivaypg91#
下面举例说明:
Erlang没有单独的字符串类型。字符串通常由整数列表表示(标准库的字符串模块操作这样的列表)。每个整数代表字符串中字符的ASCII(或其他字符集编码)值。为了方便起见,用双引号(“)括起来的字符串相当于这些字符的数值列表。
您可以使用io:format函数:
或者使用以Erlang R16 B开头shell:strings/1函数禁用此行为:
snvhrwxg2#
正如@Atomic_alarm在注解中提到的,这是由于Erlang使用字符串语法而不是整数列表打印出答案。默认值为true,而对于
[12]
,您希望将该值设置为false。有关它的文档在这里。