【问题标题】:Why is this recursive print function not working in Erlang为什么这个递归打印函数在 Erlang 中不起作用
【发布时间】:2018-02-28 23:38:19
【问题描述】:

您好,新手,我正在尝试掌握 Erlang 中的递归函数。这个功能看起来应该可以工作,但我不明白为什么它不工作。我正在尝试创建一个函数,该函数将采用 Nstring 并将字符串打印到标准输出的次数。

我的代码:

-module(print_out_n_times).
-export([print_it/2).

print_it(0, _) ->
     "";

print_it(N, string) ->
     io:fwrite(string),
     print_it(N - 1, string).

我得到的错误是:

** exception error: no function clause matching print_it(5, "hello')

我怎样才能做到这一点?

【问题讨论】:

    标签: recursion erlang


    【解决方案1】:

    Erlang 中的变量以大写字母开头。 string 是一个原子,而不是一个名为“字符串”的变量。当你定义一个函数print_it(N, string) 时,它可以用任何值作为第一个参数调用,只有原子string 作为第二个参数。如果您将 string 替换为 String,您的代码应该可以工作:

    print_it(N, String) ->
         io:fwrite(String),
         print_it(N - 1, String).
    

    【讨论】:

    • 天哪!错过了!谢谢!
    猜你喜欢
    • 2013-09-23
    • 2021-10-28
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 2013-11-02
    • 2012-09-13
    • 1970-01-01
    • 2010-12-14
    相关资源
    最近更新 更多