[erlang-questions] Erlang elseif
Richard Carlsson
richardc@REDACTED
Thu Nov 20 11:30:23 CET 2008
kdronnqvist@REDACTED wrote:
> I wrote a couple of examples how to solve this but none of them really
> feels right, the logic in what I'm trying to do is really REALLY not
> that complicated. The functions takes an argument and prints something
> based on what list the argument is a member of (if any). Like this:
>
> 42> e:elseif4($Q).
> Member of capital
>
> I would appreciate any input on this, even if it means you're bashing
> all my examples below :-)
If you want a reusable pattern, rather than a one-off hack,
the best thing is to start by separating the logic and the
side effects (as in your 4th example).
member_of(X, Lists) ->
case lists:dropwhile(fun ({A,L}) -> not lists:member(X,L) end, Lists) of
[{A,_}|_] -> A;
[] -> none
end.
print_class(C) ->
case member_of(C, [{caps, ?CAPS}, {small, ?SMALL}, {nums, ?NUMS}]) of
caps -> io:format("Member of capital\n");
small -> ...;
nums -> ...;
none -> ...
end.
For one-off things, prefer the threaded functions solution if there
are more than 2 levels.
/Richard
More information about the erlang-questions
mailing list