Подтвердить что ты не робот

В Erlang, когда я использую; или или.?

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

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

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

4b9b3361

Ответ 1

Запятая в конце строки нормального кода.
Точка с запятой в конце case case statement, или выражение, и т.д. В последнем случае или в случае, если в конце ничего нет. Период в конце функции.

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

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

Ответ 2

Мне нравится читать точку с запятой как OR, запятую как AND, полная остановка как END. Так

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*

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

Ответ 3

Период (.)

В модулях период используется для завершения атрибутов модуля и деклараций функций (формы "a.k.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.

Ответ 4

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

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

Ответ 5

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