从案例警告中导出变量
Exporting variable from case Warning
在erlang开发中,我有时会使用这样的case语句
case Status of
1 ->
Variable = "Something";
2 ->
Variable = "Something else";
3 ->
Variable = {"Something very different", [1,2,3]}
end
根据某些条件为变量赋值。
问题是:如果我在 case 语句之后使用它:
do_something(Variable),
我收到编译警告:
Warning: variable 'Variable' exported from 'case'
在 Erlang 中根据某些条件为变量赋值并避免此类警告的最佳做法是什么?
在 Erlang 中执行此操作的惯用方法是将 Variable
赋给 case
的 return 值,因为 case
是 returns 的表达式每个分支的最后一个表达式的值:
Variable = case Status of
1 -> "Something";
2 -> "Something else";
3 -> {"Something very different", [1,2,3]}
end
默认情况下不激活此警告。您必须使用 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)
我碰巧认为这样设置变量本身并没有错,所以我没有打开该选项。 (使用任何一种约定都可以编写易于阅读或难以阅读的代码。)
在erlang开发中,我有时会使用这样的case语句
case Status of
1 ->
Variable = "Something";
2 ->
Variable = "Something else";
3 ->
Variable = {"Something very different", [1,2,3]}
end
根据某些条件为变量赋值。
问题是:如果我在 case 语句之后使用它:
do_something(Variable),
我收到编译警告:
Warning: variable 'Variable' exported from 'case'
在 Erlang 中根据某些条件为变量赋值并避免此类警告的最佳做法是什么?
在 Erlang 中执行此操作的惯用方法是将 Variable
赋给 case
的 return 值,因为 case
是 returns 的表达式每个分支的最后一个表达式的值:
Variable = case Status of
1 -> "Something";
2 -> "Something else";
3 -> {"Something very different", [1,2,3]}
end
默认情况下不激活此警告。您必须使用 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)
我碰巧认为这样设置变量本身并没有错,所以我没有打开该选项。 (使用任何一种约定都可以编写易于阅读或难以阅读的代码。)