Câu trả lời thẳng là trong tệp định nghĩa mô-đun bạn có các thuộc tính, như -module().
, -export().
v.v. và định nghĩa hàm, trong khi trong trình bao, bạn nhập biểu thức cần đánh giá. Định nghĩa hàm không phải là một biểu thức.
Nếu bạn muốn xác định hàm cục bộ, tạm thời trong trình bao, bạn cần sử dụng tính năng thú vị như @DanielLuna đã hiển thị. Đây là những chức năng vô danh vô danh, do đó việc tự gọi mình đệ quy là một nỗi đau, điều này không cụ thể đối với Erlang nhưng lại phổ biến với tất cả các chức năng ẩn danh.
N.B.
Sum = fun([], _) -> 0; ([H | T], F) -> H + F(T, F) end.
trong vỏ làm KHÔNG định nghĩa một hàm gọi là Sum
nhưng định nghĩa một chức năng ẩn danh và liên kết với các biếnSum
với nó.
Đây cũng là lý do tại sao điều duy nhất bạn có thể thực hiện trong mô-đun là xác định hàm và không biểu thức được đánh giá khi mô-đun được tải.
aka: muốn chức năng trong trình bao? Chúc vui vẻ! –
Tôi muốn thông báo lỗi hữu ích hơn. – dotslash