В Эрланге, когда я использую; или, или?

Я пытался изучить Erlang и столкнулся с некоторыми проблемами с окончанием строк в функциях и операторах case.

а именно, когда я использую точку с запятой, запятую или точку внутри моих функций или операторов case?

Я получил материал для работы, но я действительно не понимаю, почему и искал немного больше информации.

5 ответов


запятая в конце строки обычного кода.
Точка с запятой в конце оператора case case или оператора if и т. д. Последний случай или если в заявлении ничего нет в конце. Точка в конце функции.

пример (извините за имена случайных величин, очевидно, это ничего не делает, но иллюстрирует точку):

case Something of 
    ok ->
        R = 1,     %% comma, end of a line inside a case 
        T = 2;     %% semi colon, end of a case, but not the end of the last
    error ->
        P = 1,     %% comma, end of a line inside a case
        M = 2      %% nothing, end of the last case
end.               %% period, assuming this is the end of the function, comma if not the end of the function

Я люблю читать с запятой или запятая, как и точка в конце. Так что

foo(X) when X > 0; X < 7 ->
    Y = X * 2,
    case Y of
        12 -> bar;
        _  -> ook
    end;
foo(0) -> zero.

читается как

foo(X) when X > 0 *OR* X < 7 ->
    Y = X * 2 *AND*
    case Y of
        12 -> bar *OR*
        _  -> ok
    end *OR*
foo(0) -> zero *END*

Это должно прояснить, почему нет; после последнего предложения случая.


период (.)

в модулях период используется для завершения атрибутов модуля и объявлений функций (a.к. а. "формы"). Вы можете запомнить это, потому что формы не являются выражениями (из них не возвращается значение), и поэтому точка представляет собой конец оператора.

имейте в виду, что определения функций с разными аритами считаются отдельными утверждениями, поэтому каждый из них будет завершен периодом.

например, функция определения hello/0 и hello/1:

hello() -> hello_world.

hello(Greeting) -> Greeting.

(обратите внимание, что в оболочке erlang период используется для завершения и оценки выражений, но это аномалия.)

точка с запятой (;)

точка с запятой действует как разделитель предложений как для предложений функций, так и для ветвей выражения.

Пример 1, п. функции:

factorial(0) -> 1;
factorial(N) -> N * fac(N-1).

Пример 2, ветви выражений:

if X < 0  -> negative;
   X > 0  -> positive;
   X == 0 -> zero
end

запятая (,)

запятая-это разделитель выражений. Если запятая следует за выражением, это означает, что после него в предложении есть другое выражение.

hello(Greeting, Name) -> 
    FullGreeting = Greeting ++ ", " ++ Name,
    FullGreeting.

вы можете думать об этом как английская пунктуация. Запятые используются для разделения вещей в серии, точки с запятой используются для разделения двух очень тесно связанных независимых предложений[1] (например, различные случаи оператора case, предложения функций с тем же именем и Ариты, которые соответствуют различным шаблонам), а точки используются для завершения предложения (полная мысль).

  1. или чтобы доказать, что ты учился в колледже. "Не используйте точки с запятой. Они трансвеститы гермафродиты абсолютно ничего. Они только показывают, что ты учился в колледже.- ...Курт Воннегут!--4-->

запятая разделяет выражения, аргументы или элементы списка/кортежа или двоичного файла. Он перегружен работой.