How to handle nested case

Jesper Louis Andersen jesper.louis.andersen@REDACTED
Mon Sep 20 11:04:37 CEST 2021


What about something like:

get_nas_from_conf() ->
  {ok, Server} = get_radius_host(),
  {ok, Port} = get_radius_port(),
  {ok, Secret} = get_radius_secret(),
  {Server, Port, Secret}.

Errors are now just crashes. But if the errors are really truly something
you want to handle, chances are you need some other flow anyway.

On Sat, Sep 18, 2021 at 10:50 PM Gian Lorenzo Meocci <glmeocci@REDACTED>
wrote:

> 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>
>


-- 
J.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20210920/24964446/attachment.htm>


More information about the erlang-questions mailing list