Tôi đang học tập và cố gắng sử dụng dialyzer để đạt được mức an toàn tối đa khi có thể. Có một điều mà tôi không hiểu: loại chức năng không kết thúc là gì và làm thế nào để biểu thị nó trong spec. Bạn có thể làm sáng tỏ điều này không?Loại chức năng không kết thúc trong erlang
5
A
Trả lời
7
Một hàm lặp lại vĩnh viễn và không bao giờ chấm dứt có loại trả về no_return()
. (Kiểu trả về đó cũng được sử dụng cho các hàm luôn luôn ném ngoại lệ, ví dụ như một hàm lỗi tùy chỉnh. Nếu bạn không chỉ định kiểu trả về đó, Dialyzer sẽ cho bạn biết rằng hàm "không có trả về cục bộ".)
được đề cập trong chương Types and Function Specifications của Hướng dẫn tham khảo Erlang:
Một số chức năng trong Erlang không có nghĩa là trả lại; hoặc vì họ xác định các máy chủ hoặc vì chúng được sử dụng để ném ngoại lệ, như trong các chức năng sau:
my_error(Err) -> erlang:throw({error, Err}).
Đối với các chức năng như vậy, nó được khuyến khích để sử dụng đặc biệt
no_return()
kiểu cho họ "trở lại", thông qua một hợp đồng biểu mẫu sau:-spec my_error(term()) -> no_return().
Các vấn đề liên quan
- 1. "kết thúc" không thể sử dụng trong mẫu chức năng
- 2. Erlang mô hình kết hợp với các chức năng
- 3. Chức năng Erlang không tồn tại trong mô-đun?
- 4. Cách sử dụng chức năng -spec trong erlang
- 5. Danh sách Erlang: chức năng index_of?
- 6. Suppressing Erlang "không sử dụng chức năng" cảnh báo
- 7. Chờ chức năng để kết thúc - thi công là không đồng bộ (không theo thứ tự)
- 8. loại các loại trong các chức năng
- 9. loại chức năng trong python3
- 10. Testing Erlang thực hiện chức năng hẹn giờ với
- 11. Chức năng die() hoặc exit() có cần thiết khi kết thúc tập lệnh php không?
- 12. Chủ đề có dừng lại khi phạm vi chức năng kết thúc không?
- 13. Recursive chức năng loại
- 14. độ lười và thành phần chức năng (haskell, erlang)
- 15. Loại kết quả của chức năng này là gì?
- 16. Prolog vs Erlang (và các ngôn ngữ chức năng khác)
- 17. cách sử dụng danh sách erlang: chức năng bản đồ
- 18. Phân loại giữa các loại chức năng
- 19. Chức năng không có loại ngầm
- 20. Sử dụng các loại chức năng trong std :: chức năng để khai báo nhiều chức năng của loại hình đó
- 21. Có nhiều chức năng trong một tệp .m được lồng hoặc cục bộ khi "kết thúc" không được sử dụng
- 22. Chức năng liên kết url
- 23. Kiểm tra Loại Chức năng trong Scala
- 24. Có loại chức năng nào trong Cython không?
- 25. 'Lỗi Loại: không phải là một chức năng' trong Node.js
- 26. Loại chức năng trong mẫu không biên dịch
- 27. Loại không đầy đủ trong chức năng của bạn bè
- 28. Chữ ký chức năng để trả lại một kết thúc đệ quy
- 29. Làm thế nào để biến "tự do" sau khi kết thúc chức năng?
- 30. Sao chép chức năng tăng cường :: cũng có thể sao chép kết thúc?
Cảm ơn! Tôi không nghĩ rằng điều này cũng có thể được áp dụng cho các chức năng không kết thúc! – ppopoff
Bài đăng trên blog này mô tả sự khác biệt (không chủ ý) giữa các loại 'no_return()' và 'none()' trong Dialyzer: http://joedevivo.com/2015/06/14/no-local-return.html –