How to handle nested case
Andreas Schultz
andreas.schultz@REDACTED
Mon Sep 20 09:54:55 CEST 2021
Hi,
With the help of https://github.com/eryx67/erlando.git, you can write this
as:
-compile({parse_transform, do}).
-compile({parse_transform, cut}).
get_nas_from_conf() ->
do([error_m ||
Server <- get_radius_host(),
Port <- get_radius_port(),
Secret <- get_radius_secret(),
return({Server, Port, Secret})
]).
This will return {ok, {Server, Port, Secret}} or {error, Error}.
Regards,
Andreas
Am Sa., 18. Sept. 2021 um 22:50 Uhr schrieb Gian Lorenzo Meocci <
glmeocci@REDACTED>:
> Hi,
> I have a function like this:
>
> get_nas_from_conf() ->
> case get_radius_host() of
> {ok, Server} ->
> case get_radius_port() of
> {ok, Port} ->
> case get_radius_secret() of
> {ok, Secret} ->
> {Server, Port, Secret};
> E -> E
> end;
> E ->
> E
> end;
> E ->
> E
> end.
>
> Which is the best way to write this kind of function?
>
> I'd like to have a with operator like in Elixir, to rewrite my function in
> this way:
>
> get_nas_from_conf() ->
> with {ok, Server} <- get_radius_host(),
> {ok, Port} = get_radius_port(),
> {ok, Secret} = get_radius_secret() ->
> {Server, Port, Secret};
> catch
> {error, _Reason} = E ->
> E
> end.
>
> Any suggestion?
>
> --
> GL
> https://www.meocci.it <https://meox.github.io>
>
--
Andreas Schultz
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20210920/cc148301/attachment.htm>
More information about the erlang-questions
mailing list