Какая польза от короткозамкнутых логических операторов в Erlang? - PullRequest
14 голосов
/ 11 ноября 2011

Я изучаю Erlang из веб-книги LearnYouSomeErlang.Одной вещью, которая поразила меня во время обучения, были операторы без короткого замыкания логического соединения и дизъюнкции, а именно;and и or.Каковы варианты использования этих операторов?Почему вы хотите использовать их вместо andalso и orelse?

Ответы [ 3 ]

12 голосов
/ 11 ноября 2011

Раньше (до R13A) andalso и orelse не были хвостовыми рекурсивными. Подробнее см. http://www.erlang.org/eeps/eep-0017.html. Я не думаю, что есть веская причина использовать and / or в новых программах.

5 голосов
/ 11 ноября 2011

Я вижу, что они делают разные вещи, и использую их так:

  • and / or как логические операторы, где я хочу сравнивать логические значения.Поскольку они строгие, я автоматически получаю проверку типов, и я ЗНАЮ именно то, что было названо.
  • andalso / orelse для контроля, очень похоже на && и ||в C.

Видя ошибки в erlang, я чувствую, что хорошо знать, что было выполнено и как это произошло.

4 голосов
/ 11 ноября 2011

Операторы and и / или просто намного старше.Операторы andalso / orelse являются более поздними дополнениями.Вариант использования для и / или сегодня может быть, когда вы просто хотите выполнить несколько простых логических операций, а горизонтальное пространство важнее, чем, возможно, сохранение пары машинных циклов.Например:

X = Y and (A or B),

вместо

X = Y andalso (A orelse B),

немного проще для глаз.

Из-за обратной совместимости было невозможно простоизменить поведение оригинала и / или стать замкнутым, поэтому потребовались новые ключевые слова.Имена andalo / orelse происходят от Standard ML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...