'catch 1 = 0'和'(catch 1 = 0)'之间有什么区别?
Erlang R14B03 (erts-5.8.4) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]
Eshell V5.8.4 (abort with ^G)
1> 1=0.
** exception error: no match of right hand side value 0
2> catch 1=0.
{'EXIT',{{badmatch,0},[{erl_eval,expr,3}]}}
3> (catch 1=0).
{'EXIT',{{badmatch,0},[{erl_eval,expr,3}]}}
答案 0 :(得分:14)
没有区别。唯一改变的是当您尝试将操作的结果绑定到变量时:
1> X = catch 1/0.
* 1: syntax error before: 'catch'
1> X = (catch 1/0).
{'EXIT',{badarith,[{erlang,'/',[1,0]},
{erl_eval,do_apply,5},
{erl_eval,expr,5},
{erl_eval,expr,5},
{shell,exprs,7},
{shell,eval_exprs,7},
{shell,eval_loop,3}]}}
这只是catch
作为前缀运算符和=
作为中缀运算符的优先级问题。括号有助于使用例在优先级上明确无误。
否则,它们完全一样。