【发布时间】:2017-12-03 20:58:45
【问题描述】:
在学习 Erlang 的基础知识(特别是通过 this MOOC)时,我正在研究 Exercism Erlang 练习,目前我正在学习 Bob。在查阅了 Erlang 文档后,我编写了我认为应该是该问题的有效解决方案,但我遇到了运行时错误,我无法弄清楚究竟是什么导致了它,也不知道如何解决这个问题。我的代码编译得很好,并且是:
-module(bob).
-export([test_version/0,response_for/1]).
test_version() ->
1.
response_for(Message) ->
Trimmed = string:trim(Message),
AllUpper = string:equal(Trimmed, string:uppercase(Trimmed)),
Empty = string:is_empty(Trimmed),
EndsWithQuestion = string:equal("?", lists:last(Trimmed)),
if
AllUpper -> "Whoa, chill out!";
Empty -> "Fine. Be that way!";
EndsWithQuestion -> "Sure.";
true -> "Whatever."
end.
您可以忽略 test_version 函数,它是您测试代码的单元测试的一部分,以检查您是否有正确的解决方案。单元测试可用here。我在每个功能测试中遇到的错误都是一样的,如下所示:
bob_tests: responds_to_something_test...失败在函数中 string:trim/1 在通话中称为 trim("Tom-ay-to, tom-aaaah-to.") 来自鲍勃:response_for/1 (c:/Users/jcoo092/exercism/erlang/bob/_build/test/lib/bob/src/bob.erl, 第 8 行)从 bob_tests 调用:'-bob_responds/2-fun-0-'/2 (c:/Users/jcoo092/exercism/erlang/bob/_build/test/lib/bob/test/bob_tests.erl, 第 71 行)来自 bob_tests:responds_to_something_test/0 的调用 **错误:undef 输出:>
我查看了 undef 错误的含义,显然这意味着 Erlang 运行时认为 string:trim() 函数未定义(第 8 行是 Trimmed = ... 行)。我试过跳过那个并继续其他人,但他们给出了同样的错误。显然我在这里做错了,因为这些函数在 Erlang 网站的文档中列出,但我真的看不出问题所在。
谁能解释我做错了什么,以及如何解决它?
【问题讨论】:
标签: erlang