Блочные выражения это выражения, объединённые в блок begin ... end
. То же: block expression.
Блочные выражения выглядят в общем случае так:
begin
Выражение1,
Выражение2,
...
ВыражениеN
end
Такой блок удобен для группировки связанных между собой выражений. Он, конечно, сам тоже является выражением. Результат его работы — тот же, что и у последнего выражения (ВыражениеN).
Рассмотрим пример:
main() ->
F = begin
A = 1,
B = 1,
C = A+B,
D = B+C,
E = C+D,
D+E
end,
io:format("~p~n", [C]),
io:format("~p~n", [F]).
Эта программа выведет 2 и 8. 8 привязывается к F как результат работы блочного выражения. 2 привязалась к переменной C внутри блочного выражения. Потом (вне блока) эта привязанность сохраняется.
Про это лучше не забывать, что у begin ... end
нет собственной области видимости. В нашем примере можно привязать единицу к A до блочного выражения. Результат будет тот же.
...
A = 1,
F = begin
B = 1,
...
© Алексей Карманов, 2024.