안녕하세요 저는 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(#)
기능을 이해하지 못한다. 매개 변수로 숫자가있는 이유는 무엇입니까? 이 함수는 인수에 대응 0이고 명백하게 모든 sword(#)
기능은 talk
기능 비교 다른 인 black_knight
함수에 sword(#)
함수에 전달하는 인수에 대응 0 또한
방식 인 경우이 함수 is_function
실제로 확인.
책이 sword
기능과 talk
기능을 전달하는 방법은 다음과 같습니다.
exceptions:black_knight(fun exceptions:talk/0).
exceptions:black_knight(fun() -> exceptions:sword(1) end).
talk
기능을 대 우리는 단지 sword(1)
함수로 우리는 익명 함수로 포장해야하는 기능을 전달합니다. 나는 그것을 얻지 않는다.
그래서 질문은 왜이 sword(#)
다른 talk
에서 기능을 전달하고
- .
- 왜
sword(#)
에 숫자를 매개 변수로 사용합니까? - 왜
sword(#)
에는 1의 값을 가진 것처럼 보이는가? (숫자 매개 변수가 매개 변수로 계산됩니다)? The chapter of the book I'm at.
는 시간 내 주셔서 감사합니다. 당신이 black_knight
기능, is_function(Attack, 0)
의 가드 문을 보면 전달 함수가 0 매개 변수를 사용하는 경우