[erlang-questions] variable exported from case in OTP 18

Theepan <>
Tue Sep 29 12:07:30 CEST 2015


The difference is implicit vs explicit. When it is explicit compiler
assumes you are aware of what you are doing and you control the return
value of each case clause.

Theepan

On Tue, Sep 29, 2015 at 1:36 PM, Martin Koroudjiev <>
wrote:

> Hello,
>
> I am confused why this code generates warning with the warn_export_vars
> option:
>
> -module(test).
>
> -export([test/1]).
>
> test(Mode) ->
>     case Mode of
>         r -> {ok, FP} = file:open("warn.erl", [read]);
>         w -> {ok, FP} = file:open("warn.erl", [write])
>     end,
>     file:close(FP).
>
> compile:file("test.erl", [report, warn_export_vars]).
> test.erl:10: Warning: variable 'FP' exported from 'case' (line 6)
> {ok,test}
>
> Why this is better than this code:
>
> test(Mode) ->
>     {ok, FP} =
>         case Mode of
>             r -> file:open("warn.erl", [read]);
>             w -> file:open("warn.erl", [write])
>         end,
>     file:close(FP).
>
> which produces no warnings?
>
> Thanks in advance.
>
> Regards,
> Martin
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20150929/0a6d1fe5/attachment.html>


More information about the erlang-questions mailing list