Re: How to handle nested case
Gian Lorenzo Meocci <[email protected]>
| Newsgroups | gmane.comp.lang.erlang.general |
|---|---|
| Message-ID | <CAAPjnHW5FnsQ0dAOvEq9-9J91gnxaCmibRoO_tJm8crcQ-eDyw@mail.gmail.com> |
I think that there isn't a generic solution for this problem. It’s time to introduce the 'with' operator in Erlang 😂 Il Dom 19 Set 2021, 09:06 Attila Rajmund Nohl <[email protected]> ha scritto: > 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 >