Erlang 易出错的位置

case语句

case语句另一个需要注意的问题就是变量范围,每个case分支中定义的变量都将默认导出case语句,也就是在case语句结束后可以被引用,因此一个规则就是每个case分支定义的变量应该一致,不然算是非法的,编译器会给出警告,比如:

f(X) ->  
case g(X) of  
true -> A = h(X), B = A + 7;  
false -> B = 6  
end,  
h(A).

如果执行true分支,变量A和变量B都被定义,而如果执行的false分支,只有变量B被引用,可在case语句执行后,h(A)调用了变量A,这是不安全的,因为变量A完全可能没有被定义,编译器将给出警告
variable 'A' unsafe in 'case' (line 10)
[参考自:教父的告白](http://www.cppblog.com/keigoliye/default.html?page=7)

原文地址:https://www.cnblogs.com/ShankYan/p/4207238.html