Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 避免在Erlang中将数字转换为字符_List_Erlang_Integer - Fatal编程技术网

List 避免在Erlang中将数字转换为字符

List 避免在Erlang中将数字转换为字符,list,erlang,integer,List,Erlang,Integer,我在Erlang将列出的数字转换为字符时遇到了问题,因为列出的项目都不能表示字符 我正在编写一个函数,将所有数字分隔成一个正整数,并将它们放入一个列表中,例如:digitalize(123)应该返回[1,2,3]等等 以下代码可以正常工作,除非列表仅包含8和/或9: digitize(_N) when _N =:= 0 -> []; digitize(_N) when _N > 0 -> _H = [_N rem 10], _T = digitize(_N div 10), _

我在Erlang将列出的数字转换为字符时遇到了问题,因为列出的项目都不能表示字符

我正在编写一个函数,将所有数字分隔成一个正整数,并将它们放入一个列表中,例如:
digitalize(123)
应该返回
[1,2,3]
等等

以下代码可以正常工作,除非列表仅包含8和/或9:

digitize(_N) when _N =:= 0 -> [];
digitize(_N) when _N > 0 -> _H = [_N rem 10], _T = digitize(_N div 10), _T ++ _H.
例如:它不是将
数字化(8)
返回
[8]
,而是将非图形字符
“\b”
数字化(89)
返回
“\b\t”
。这只适用于数字8和9,当它们单独放在列表中时<例如,代码>数字化(891)将正确返回
[8,9,1]


我知道这样做的原因,但如何在不改变结果的情况下解决它?(例如:在结果中包含空列表,如
[[],[8]
用于
数字化(8)
)。

如果您查看注释,您会发现shell打印数据的方式比数据本身的问题更大。你的逻辑是赖特,我不会改变它。您可以在代码中引入
io:format/2
的一些用法,但我想这会使在代码的其他部分使用此函数变得更加困难


另一种解决方法是更改shell设置本身。有一种方法可以禁用将列表打印为stings,它应该完全满足您的需要。记住,当你完成shell的东西时,把它改回去,因为当你开始使用一些“字符串”返回函数时,它可能会引起一些混乱

可能是See的复制品。是的,你实际上没有问题。这是由于Erlang中字符串和列表的歧义造成的。“\b\t”与[8,9]相同,只是在shell中的打印方式不同(或在格式调用中使用~p时)。