В Erlang, когда я использую; или или.?
Я пытался изучить Erlang и сталкивался с некоторыми проблемами с окончанием строк в функциях и операторах case.
А именно, когда я использую точку с запятой, запятую или период внутри моих функций или операторов case?
У меня есть материал для работы, но я действительно не понимаю, почему и искал немного больше информации.
Ответы
Ответ 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
Запятая разделяет выражения или аргументы или элементы списка/кортежа или двоичного кода. Он перегружен работой.