List 避免在Erlang中将数字转换为字符
我在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), _
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时)。