【问题标题】:Number in list printed as "\f"列表中的数字打印为“\f”
【发布时间】:2016-04-23 19:11:38
【问题描述】:

我正在努力学习 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" 是什么意思?谢谢。

【问题讨论】:

标签: list erlang operators erlang-shell


【解决方案1】:

正如@Atomic_alarm 在评论中提到的那样,这是由于 erlang 使用字符串语法而不是整数列表打印出答案。默认值为true,如看到[12],您希望将值设置为false。它的文档是here.

【讨论】:

    【解决方案2】:

    例如解释here

    Erlang 没有单独的字符串类型。字符串通常由整数列表表示(标准库的字符串模块处理这些列表)。每个整数代表字符串中字符的 ASCII(或其他字符集编码)值。为方便起见,用双引号 (") 括起来的字符串等同于这些字符的数值列表。

    你可以使用io:format函数:

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

    或使用以 Erlang R16B 开头的 shell:strings/1 函数禁用此行为:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      • 2020-01-14
      • 2020-08-26
      • 2018-08-18
      • 1970-01-01
      • 2019-02-12
      相关资源
      最近更新 更多