【发布时间】:2016-08-08 05:53:04
【问题描述】:
我有 JavaScript 方面的经验,我习惯于回调函数:
function myFun(arg1, arg2, successCB, failCB) {
var sum = arg1 + arg2;
if (sum > tooHigh) {
failCB("too high!");
} else {
otherFun(sum, arg1, successCB, failCB);
}
}
我可以用 Erlang 编写相同的代码:
my_fun(Arg1, Arg2, SuccessCB, FailCB) ->
case Arg1 + Arg2 of
Sum when Sum > ?TOO_HIGH ->
FailCB(too_high);
Sum ->
other_fun(Sum, Arg1, SuccessCB, FailCB)
end.
根据我的经验,我认为这种方法是合理的,但我觉得我需要在我的代码中做很多这样的事情,所以,显然,有更好的方法来管理这些真/假/任何场景。
这是典型的 Erlang 代码吗?还有其他方法可以让我这样做吗?
【问题讨论】:
-
为什么不直接使用不同的函数子句呢?还是
case User of? -
您需要做好功课,因为如果您尝试在 Erlang 中使用与在其他语言中相同的方法来处理错误,那么您做错了。例如,尝试搜索 Erlang 的“让它崩溃”哲学,以及 here's a related question。
标签: erlang