二郎, 'catch 1=0' 和 '(catch 1=0)' 有什么区别?

标签 erlang

'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}]}}

最佳答案

没有区别。唯一改变的是当您尝试将操作结果绑定(bind)到变量时:

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 之间的优先级问题。作为前缀运算符,和 =作为中缀运算符。括号有助于使用例的优先级明确。

否则,它们完全相同。

关于二郎, 'catch 1=0' 和 '(catch 1=0)' 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7557541/

相关文章:

database - 防止添加主键已存在于 mnesia 中的记录的最佳方法是什么?

erlang - 学习二郎? speedbump 线程,常见,小问题

optimization - Erlang:优化复杂的qlc

compilation - Elixir或Erlang程序可以编译为独立的二进制文件吗?

web-applications - 大规模 Web 应用研究生类(class)

package - 在 linux-mint 18 Sarah 上安装 erlang-solutions 时遇到错误

Erlang 如何混合使用 try catch 和 if

Erlang 错误处理, 'try' 中的 X 不安全

erlang - 通过退出信号传递变量 [Erlang]

macos - MacOS X 上的 Erlang 和 Yaws 设置