Есть сервер сессий, который возвращает {error, _} либо #session{....., opaque = CaptchaCode}
Есть кусок кода, который проверяет валидность формы регистрации и выдает ok либо текст о?ибки.
SessionTest = case session:get({captcha, CL}, -1) of
{error, expired} -> "Verification code expired";
{error, nosession} -> "Bad verification code";
#session{opaque = CS} -> ok; %% тут я по-разному писал...
_ -> "Unknown error"
end,
Test = if
SessionTest /= ok -> SessionTest;
CC /= CS -> "Wrong verification code"; %% вот здесь о?ибка компиляции
LL < 4 -> "Pasword is too short";
P /= P2 -> "Paswords not match";
true -> ok
end,
Эрланг компилирует и говорит "variable 'CS' unsafe in 'case'"
и указывает на строчку, в которой стоит комментарий про о?ибку.
Формально, понятно о чем он, и если я {error, expired} -> "Verification code expired";
переписываю как {error, expired} -> CS = void, "Verification code expired";
и т.д., то компилер успокаивается.
Но фактически, проверка SessionTest и так исключает unsafe случай.
Два вопроса:
1. Прав ли я?
2. Как это закодить красив?е?
2.5. Как это закодить красив?е, чтобы эрланг ску?ал? :-)
