14

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; andor. 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ì andalsoorelse?Việc sử dụng các toán tử boolean không mạch ngắn trong Erlang là gì?

+0

Đượ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

+0

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

Trả lời

12

Nó từng là (cho đến R13A) andalsoorelse 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.

+0

Liên kết thú vị. Cảm ơn câu trả lời! – missingfaktor

4

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.

5

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ư &&|| 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.

+0

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

+0

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

+0

@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

Các vấn đề liên quan