【发布时间】:2014-04-29 02:35:06
【问题描述】:
我写了一个简单的函数把一个数组分成两部分。
split([], [], []) -> [[], []];
split([], [], Part2) -> [[], Part2];
split([], Part1, []) -> split([], [], Part1);
split([], Part1, Part2) -> [Part1, Part2];
split([Head | Tail], Part1, Part2) -> split(Tail, Part2, [Head | Part1]).
我尝试使用我的函数,但遇到了一个巨大的问题,请参见下图。该函数适用于很多示例,但如果用于输入[4,9,2],[],[],我会得到以下奇怪的结果["\t",[2,4]]。
问题出在哪里? 感谢您的回答和时间。
【问题讨论】:
-
Erlang 中的字符串只是 ASCII 范围内的整数列表。 ASCII 码 9 表示制表符,所以列表 [9] 和字符串 "\t" 对于 Erlang 来说是相等的。
-
感谢您的回答。你觉得这种行为正常吗?
-
正如 achydragon 所说,2 "\t" 和 [9] 是打印相同值的两种不同方式。这是 erlang shell 中的一个选择,但它对您可能希望在程序中使用此结果的方式没有影响,所以是的,这是正常的。可以比较
io:format("~w~n",[[9]]).和io:format("~p~n",[[9]]).的结果 -
~p“漂亮地打印它的值,这是它所做的事情之一。它还智能地将长输出分成多个缩进行
标签: functional-programming erlang erlang-shell