В Java:
Наконец всегда называется, независимо от того, если исключение было правильно поймано в выгоде (), или на самом деле если у Вас есть выгода вообще.
Я не пользователь LFE , но есть руководство пользователя в дереве исходных текстов. Прочитав его, я бы предположил, что это примерно так:
(let ((A 2))
(let ((Pid (spawn (lambda ()
(receive
(B (when (is_integer B))
(: io format "Added: ~p~n" (list (+ A B))))
(_ nan))))))
(! Pid 5)))
Но я, скорее всего, совершил ошибку, так как я даже не оценил это в LFE.
Некоторые мои вопросы:
LET *
или она уже ведет себя как она? В выпуске LFE очень мало примеров, все предложения приветствуются.
Предложение Кристиана верно. Мой единственный комментарий: нет необходимости использовать имена переменных с заглавной буквы, это не неправильно, но не обязательно.
LFE let
- это «настоящий» let, в котором привязки переменных видны первыми. в теле. Вы можете использовать шаблоны в let. Существует также форма let *
(на самом деле макрос), которая связывается последовательно.
Нет, до сих пор я сохранил все имена основных функций Erlang точно так же, как они находятся в vanilla erlang. Определенно более шепотливо использовать -
вместо _
в именах, но что вы делаете со всеми другими именами функций и атомами в OTP? Одно из предложений состоит в том, чтобы автоматически отобразить -
в символах LFE в _
в полученных атомах, и, конечно же, вернуться в обратном направлении. Это, вероятно, сработает, но приведет ли это к путанице?
Тогда я мог бы иметь модуль поведения, похожий на:
(defmodule foo
(export (init 1) (handle-call 2) (handle-cast 2) (handle-info 2) ...)
(behaviour gen-server))
(defun handle-call ...)
(defun handle-cast ...)
etc ...
Но я очень неоднозначно отношусь к этому.