Erlang 我是否应该对每个返回值进行模式匹配?

Erlang 我是否应该对每个返回值进行模式匹配?,erlang,pattern-matching,Erlang,Pattern Matching,当我在Erlang中编程时,是否应该通过模式匹配验证函数调用的所有返回值以获得成功,即使我不打算使用返回值?到目前为止,我看到的大多数ErlangAPI都不会在出错时抛出异常(但返回类似{error,error}的内容),因此我必须验证返回值yes?如果有例外,我真的不需要担心吗?当出现问题时,尽早崩溃是一种很好的编程风格。在此之后执行的任何操作都将在系统处于未知状态时完成 除非您打算处理错误值并对其执行某些操作,否则您需要为成功案例编写代码。就像下面的小循环: life() -> o

当我在Erlang中编程时,是否应该通过模式匹配验证函数调用的所有返回值以获得成功,即使我不打算使用返回值?到目前为止,我看到的大多数ErlangAPI都不会在出错时抛出异常(但返回类似{error,error}的内容),因此我必须验证返回值yes?如果有例外,我真的不需要担心吗?

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

除非您打算处理错误值并对其执行某些操作,否则您需要为成功案例编写代码。就像下面的小循环:

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

是的,这就是我想的。问题是我使用的第三方API之一在成功时没有很好地返回ok。保存文档后,它将返回保存的文档本身。我得到的是一些complexdoc,而不是{ok,SomeComplexDoc}。@Jeremy,您可以保存文档,然后在下一行匹配它
Doc=my\u api\u call()
ok=is\u有效\u Doc(Doc)
。是的,这是个好主意。我也在做类似的事情。SomeComplexDoc要么作为某个大结构返回,要么作为一个原子返回,以指示错误。我可以做一些类似于
false=is_atom(Doc)
的事情,如果保存失败,这应该会失败。