我应该模式匹配每个返回值吗?

问题描述:

当我在Erlang编程时,我应该通过模式匹配验证函数调用中的所有返回值是否成功,即使我不打算使用返回值?到目前为止,我所见过的大多数Erlang API都不会在错误时抛出异常(但返回像{error,Error}之类的东西),所以我必须验证返回值yes?任何例外,我不需要担心这一点吗?我应该模式匹配每个返回值吗?

这是很好的编程风格,当出现问题时尽可能早地崩溃。之后执行的任何操作都将在系统处于未知状态下完成。

除非您打算处理错误值并对其执行某些操作,否则您会为成功案例编写代码。正如在下面的小悲伤的循环:

life() -> 
    ok = work(), 
    ok = rest(), 
    life(). 
+0

基督徒说这一切... + 1。 – jldupont 2009-12-24 01:33:11

+0

是的,这是我的想法。问题是我使用的第三方API之一不能很好地返回成功。保存文档后,它会返回保存的文档本身。我找回SomeComplexDoc而不是{ok,SomeComplexDoc}。 – 2009-12-24 02:42:34

+3

@Jeremy,你可以保存文档,然后在下一行中匹配它。 'Doc = my_api_call()','ok = is_valid_doc(Doc)'。 – Zed 2009-12-24 08:54:33