在erlang中打印数字的每个数字的问题
problems in printing each digit of a number in erlang
我正在尝试制作一个程序,该程序将读入一个数字,然后在列表中输出该数字的每个数字。但是,在我尝试使用数字 8 和 9 之前,大多数情况看起来都很好。该程序只输出 \b
\t
。
如果输入的数字包含8或9,同时有其他数字,如283
,则正常打印。否则如果只有 8 或 9,例如 8
、99
,那么它会给我 8 和 9 的二进制表示(如果我没记错的话)。
我的程序如下:
digitize(0)-> 0;
digitize(N) when N < 10 -> [N];
digitize(N) when N >= 10 -> digitize(N div 10)++[N rem 10].
函数 returns 预期的列表,但是 shell 显示数字列表,这些数字是字符的 ASCII 码字符串(因为这正是字符串 是 在 Erlang 中;没有特殊的字符串类型)。您可以通过在提示符下输入 [8, 8]
(例如)来查看它,并通过调用 shell:strings(false)
禁用此行为(当您再次需要正常行为时调用 shell:strings(true)
)。
Erlang 中的字符串不是单独的类型,而是数字列表。列表打印有一种启发式方法来检测它何时可能是一个字符串。如果它认为它是一个字符串,它将被打印出来。 \b 是退格符,\t 是制表符,它们是 ASCII 码 8 和 9
另请参阅:
我正在尝试制作一个程序,该程序将读入一个数字,然后在列表中输出该数字的每个数字。但是,在我尝试使用数字 8 和 9 之前,大多数情况看起来都很好。该程序只输出 \b
\t
。
如果输入的数字包含8或9,同时有其他数字,如283
,则正常打印。否则如果只有 8 或 9,例如 8
、99
,那么它会给我 8 和 9 的二进制表示(如果我没记错的话)。
我的程序如下:
digitize(0)-> 0;
digitize(N) when N < 10 -> [N];
digitize(N) when N >= 10 -> digitize(N div 10)++[N rem 10].
函数 returns 预期的列表,但是 shell 显示数字列表,这些数字是字符的 ASCII 码字符串(因为这正是字符串 是 在 Erlang 中;没有特殊的字符串类型)。您可以通过在提示符下输入 [8, 8]
(例如)来查看它,并通过调用 shell:strings(false)
禁用此行为(当您再次需要正常行为时调用 shell:strings(true)
)。
Erlang 中的字符串不是单独的类型,而是数字列表。列表打印有一种启发式方法来检测它何时可能是一个字符串。如果它认为它是一个字符串,它将被打印出来。 \b 是退格符,\t 是制表符,它们是 ASCII 码 8 和 9
另请参阅: