multiple case ... of ...

Richard Carlsson <>
Tue Aug 10 14:23:54 CEST 2004


On Tue, 10 Aug 2004, Dietmar Schäfer wrote:

> Hi !
>
> Is there anybody out ther who can tell me how to do things
> like this:

You just need another name for the second Reason (e.g. Reason1).
Variables bound in the first case-expression are exported, and
can be used later - but only if they are bound in all the clauses,
otherwise they are "unsafe", which is a compile time error.

So the Reason in the second case-expression wants to use the above
binding since it is not a new variable. But the existing binding
is unsafe.

Either put the two cases in different functions, so they are not
in the same scope, or rename the second Reason.

	/Richard


> create_table() ->
>        case mnesia:create_table(fourd_mib_variables, [{snmp, [{key,
> string}]},  %%  o.k. ??
>                  {attributes, record_info(fields, fourd_mib_variables)},
>                  {disc_copies, [nodes()]}]) of
>          {atomic, ok}     -> io:format("table fourd_mib_variables could
> be created"),
>                              ok;
>          {aborted,Reason} -> io:format("creation of database failed
> reason.~n ~w",[Reason]),
>                              Reason
>        end,
>
>
>        case mnesia:create_table(command_table, [{snmp, [{key,
> string}]},  %% ist das so o.k. ??
>                  {attributes, record_info(fields, command_table)},
>                  {disc_copies, [nodes()]}]) of
>          {atomic, ok}     -> io:format("table command_table could be
> created"),
>                              ok;
>          {aborted,Reason} -> io:format("creation of database
> command_table failed reason.~n ~w",[Reason]),
>                              Reason
>        end.
>
>
>
> the compiler tells me :
>
> src/cmmc_foc.erl:38: variable 'Reason' unsafe in 'case' (line 24)
> error
>
>
> Best Regards !
>
>
> Dietmar
>
>
>

Richard Carlsson ()   (This space intentionally left blank.)
E-mail: 	WWW: http://user.it.uu.se/~richardc/
 "Having users is like optimization: the wise course is to delay it."
   -- Paul Graham



More information about the erlang-questions mailing list