在Erlang中递归遍历字符串字符的简单示例

时间:2016-07-22 11:43:08

标签: recursion erlang

我无法理解如何浏览字符串中的所有字符,请您分享一个简单的例子吗?

我有一个字符串,比如

"function(){var a = 10; var b = 5; return a + b;}".

现在我想逐字逐句地“循环”字符串并根据其值进行操作。

这是我的代码在lexme("some string here").

运行时不起作用
lexme(S) ->
    lexme(S, 1).

lexme([H | T], _) ->
    io:fwrite("~p~n", [H]),
    T.

1 个答案:

答案 0 :(得分:1)

为了使lexme/2递归,它必须自己调用。

试试这个:

lexme([H | T], _) ->
    io:fwrite("~p~n", [H]),
    lexme(T, 1).

我不确定你打算用第二个参数做什么。你忽略了它,为什么会这样呢?

您还需要一个处理空列表的函数头,以便递归可以终止,因此完整定义将是这样的:

lexme([], _) ->
    done;
lexme([H | T], _) ->
    io:fwrite("~p~n", [H]),
    lexme(T, 1).

有关详细信息,请参阅http://learnyousomeerlang.com/recursion