[erlang-questions] How do I elegantly check many conditions?
Nick Gerakines
nick@REDACTED
Fri Mar 20 15:13:34 CET 2009
In the past, I've done things like this:
[untested pseudo-code] ...
create_user(Name, Email, ...) ->
case validate_user({Name, Email, ...}, [user_name, user_email,
user_password, ...]) of
true -> do_it();
{error, X} -> expose_error();
_ -> oh_no()
end.
validate_data(UserDetails, []) -> true;
validate_data(UserDetails, [user_name | Rules]) ->
case fcall_to_assert_name_is_ok(UserDetails) of
true -> validate_data(UserDetails, Rules);
_ -> {error, name_taken}
end;
validate_data(...) -> ...
It's clean and gives you a quick way to determine which rules to use
for a given data validation block.
# Nick Gerakines
On Fri, Mar 20, 2009 at 6:20 AM, ryeguy <ryeguy1@REDACTED> wrote:
> So when a user sends a request to register an account, they send their
> username, password, email, and other info. The registration function
> must verify all of their data. An example would be:
>
> - verify email not in use
> - verify username not in use
> - verify username is alphanumeric
> - verify all fields are above X characters long
> - verify all fields are less than Y characters long
>
> Now I don't want to have a 5 level deep if or case statement, but what
> other options do I have? Splitting it into separate functions sounds
> like a good idea, but then I just have to check the return value of
> the functions in some sort of conditional and it's back to the
> original problem.
>
> I could separate them into functions and then call an if statement
> with all of the conditionals OR'd together, but that wouldn't give me
> what I want because I need to be able to tell the user the specific
> error if there was one.
>
> How does one handle this kind of situation in erlang?
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://www.erlang.org/mailman/listinfo/erlang-questions
>
More information about the erlang-questions
mailing list