使用erlang进行开发时,我有时会使用像这样的case语句
case Status of
1 ->
Variable = "Something";
2 ->
Variable = "Something else";
3 ->
Variable = {"Something very different", [1,2,3]}
end
根据某些条件为变量赋值。
问题是:如果我在案例陈述之后使用它:
do_something(Variable),
我收到了编译警告:
Warning: variable 'Variable' exported from 'case'
Erlang根据某些条件为变量赋值并避免出现此类警告的最佳做法是什么?
答案 0 :(得分:12)
在Erlang中执行此操作的惯用方法是为Variable
指定case
的返回值,因为case
是一个表达式,它返回每个分支的最后一个表达式的值:
Variable = case Status of
1 -> "Something";
2 -> "Something else";
3 -> {"Something very different", [1,2,3]}
end
答案 1 :(得分:4)
默认情况下不会激活此警告。您必须使用warn_export_vars
选项将其启用。例如,将上面的代码放入foo.erl
:
$ erlc foo.erl
(没有警告)
$ erlc +warn_export_vars foo.erl
foo.erl:14: Warning: variable 'Variable' exported from 'case' (line 6)
我碰巧认为设置这样的变量本身并没有什么不妥,所以我不打开这个选项。 (可以使用任何约定编写易于阅读或难以阅读的代码。)