Tôi đang học Erlang từ cuốn sách web LearnYouSomeErlang. Có một điều khiến tôi giật mình trong khi học là không có sự kết hợp boolean ngắn mạch và các toán tử rời rạc; and
và or
. Các trường hợp sử dụng cho các nhà khai thác này là gì? Tại sao bạn muốn sử dụng chúng thay vì andalso
và orelse
?Việc sử dụng các toán tử boolean không mạch ngắn trong Erlang là gì?
Trả lời
Nó từng là (cho đến R13A) andalso
và orelse
không có đuôi đệ quy. Xem http://www.erlang.org/eeps/eep-0017.html để biết chi tiết. Tôi không nghĩ có lý do chính đáng để sử dụng các chương trình and
/or
trong mới mới.
Liên kết thú vị. Cảm ơn câu trả lời! – missingfaktor
Các và/hoặc toán tử đơn giản hơn nhiều. Các toán tử andalso/orelse được bổ sung sau này. Một trường hợp sử dụng cho và/hoặc ngày hôm nay có thể là khi bạn chỉ muốn thực hiện một số thao tác boolean đơn giản và không gian ngang quan trọng hơn có thể tiết kiệm một vài chu trình máy. Ví dụ:
X = Y and (A or B),
hơn
X = Y andalso (A orelse B),
là dễ dàng hơn một chút trên mắt.
Vì lý do tương thích ngược, không thể chỉ thay đổi hành vi của bản gốc và/hoặc để trở thành mạch ngắn, do đó cần có từ khóa mới. Các tên andalso/orelse đến từ tiêu chuẩn ML.
tôi thấy chúng như làm những việc khác nhau và sử dụng chúng như vậy:
and
/or
nhà khai thác như logic nơi tôi muốn so sánh các giá trị logic. Vì chúng nghiêm ngặt, tôi tự động kiểm tra loại và tôi KNOW chính xác những gì đã được gọi.andalso
/orelse
để kiểm soát, giống như&&
và||
trong C.
lỗi Thấy được định nghĩa trong erlang tôi cảm thấy nó là tốt để biết những gì đã được thực hiện và làm thế nào nó đã đi.
1. 'andalso' và' orelse' cũng có thể được sử dụng như các toán tử logic. 2. Tôi không hiểu chút về kiểm tra kiểu. 3. Biết những gì đã được gọi là không quan trọng với các biểu thức minh bạch tham chiếu; nó chỉ có liên quan trong bối cảnh tác dụng phụ. – missingfaktor
Tôi nghĩ những gì Robert đang nói là đôi khi bạn muốn tất cả các toán hạng được đánh giá để chúng có thể tăng ngoại lệ, ngay cả khi chúng không cần thiết cho việc đánh giá vị từ. Đó là một điểm tốt. – dsmith
@dsmith: Có, cả điều đó và để kiểm tra xem chúng có thực sự trả về các giá trị boolean không. Tôi có lẽ quá thận trọng nhưng rất tốt để bắt lỗi càng sớm càng tốt. – rvirding
- 1. Điều gì (trong các thông số kỹ thuật) đảm bảo rằng 'các nhà khai thác logic ngắn mạch không thực sự không phải là ngắn mạch?
- 2. C# toán tử logic - bình thường và ngắn mạch
- 3. Ngắn mạch (&&) trong Haskell
- 4. Tại sao không có mạch điều khiển bitwise & ngắn mạch?
- 5. mạch ngắn vs nhà khai thác hiện tượng đoản mạch không
- 6. Đánh giá ngắn mạch thông qua toán tử AND trong PHP
- 7. ngắn mạch loại
- 8. PHP ngắn mạch đánh giá lười biếng, mà là nó trong hướng dẫn sử dụng php.net?
- 9. Việc triển khai các thuật toán để đánh giá mạch
- 10. Tại sao không phải là ngắn mạch trong lambda làm việc?
- 11. JavaScript có "đánh giá ngắn mạch" không?
- 12. Tính năng unboxing hoạt động như thế nào trong các biểu thức boolean ngắn mạch?
- 13. Các toán tử Boolean được ưu tiên
- 14. Thực hành tốt nhất liên quan đến đánh giá ngắn mạch C# là gì?
- 15. hành vi ngắn mạch của toán tử OR có điều kiện (||)
- 16. Các toán tử boolean có thể được sử dụng với bộ tiền xử lý không?
- 17. Java ngắn mạch đánh giá
- 18. Mạch ngắn là gì và nó được sử dụng như thế nào khi lập trình bằng Java?
- 19. Ghi đè toán tử 'boolean' trong python?
- 20. Clojure có logic mạch ngắn không?
- 21. Việc sử dụng toán tử "&" trong SQL SERVER
- 22. ngắn mạch đánh giá và tác dụng phụ
- 23. Khi thực hiện các con trỏ chức năng mục đích của việc sử dụng toán tử địa chỉ so với việc không sử dụng nó là gì?
- 24. Toán tử "= ~" trong Ruby là gì?
- 25. HOẶC điều hành ngắn mạch trong SQL Server
- 26. Có thực hành tốt để sử dụng toán tử xor để kiểm tra boolean không?
- 27. ngắn tay để chuỗi các toán tử logic trong javascript?
- 28. Toán tử & = trong Java là gì
- 29. Toán tử || = đứng trong Ruby là gì?
- 30. Các loại toán tử trả về trong C++ là gì?
Được gắn thẻ với 'Lập trình Logic' vì tôi được thông báo rằng điều này có liên quan đến nguồn gốc của Erlang trong Prolog. – missingfaktor
Liên quan: [Khi nào thích 'và' trên' andalso' trong kiểm tra bảo vệ] (http://stackoverflow.com/questions/6025132/when-to-prefer-and-over-andalso-in-guard-tests). – kay