嗨,我正在通过Fred Hebert学习一些Erlang来学习Erlang。Erlang函数,参数编号
而且我遇到,我很迷惑关于代码:
sword(1) -> throw(slice);
sword(2) -> erlang:error(cut_arm);
sword(3) -> exit(cut_leg);
sword(4) -> throw(punch);
sword(5) -> exit(cross_bridge).
talk() -> "blah blah".
black_knight(Attack) when is_function(Attack, 0) ->
try Attack() of
_ -> "None shall pass."
catch
throw:slice -> "It is but a scratch.";
error:cut_arm -> "I've had worse.";
exit:cut_leg -> "Come on you pansy!";
_:_ -> "Just a flesh wound."
end.
所以这里的混乱。我不明白sword(#)
函数。为什么有数字作为参数?该功能实际上is_function
检查,如果这些功能都是0元数的,显然所有的sword(#)
功能是元数为0
同样的方式在sword(#)
功能传递到black_knight
功能是比较不同的talk
功能。
以下是本书如何通过sword
函数和talk
函数。
exceptions:black_knight(fun exceptions:talk/0).
VS
exceptions:black_knight(fun() -> exceptions:sword(1) end).
的talk
功能我们只是传递,其中作为sword(1)
功能,我们有一个匿名函数来包裹它的功能。我不明白。
所以问题是:
- 为什么经过这些
sword(#)
不同talk
功能。 - 为什么
sword(#)
有一个数字作为参数? sword(#)
为什么sword(#)
看起来好像有一个1(我正在计算数字参数作为参数)?
The chapter of the book I'm at.
谢谢您的时间。