Re: How to handle nested case

Attila Rajmund Nohl <[email protected]>
Newsgroups gmane.comp.lang.erlang.general
Message-ID <CAFkcMa8B=YuPrjKmKisb82Vyemn-+2iGZy0nHMncXBGdLtpWNw@mail.gmail.com>
Hello!

One way (I haven't actually tried to compile this, but hopefully you
get the idea):

get_nas_from_conf() ->
  try
    {ok, Server} = get_radius_host(),
    {ok, Port} = get_radius_port(),
    {ok, Secret} = get_radius_secret(),
    {Server, Port, Secret};
  catch
    error:{badmatch, E} ->
      E
end.

Of course, if the badmatch comes from the get_* functions, this
construct might catch that too, but you might be able to  ensure this
doesn't happen.

Gian Lorenzo Meocci <[email protected]> ezt írta (időpont: 2021.
szept. 18., Szo, 22:50):
>
> 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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.