Macros Erlang中的一流模式?

Macros Erlang中的一流模式?,macros,erlang,language-features,first-class,Macros,Erlang,Language Features,First Class,在Erlang中是否有对的支持 f(SomeMagicPattern) -> receive SomeMagicPattern -> ok end. 如果答案是否定的(支持),您知道实现这一目标的其他方法吗?例如,使用宏?否,Erlang没有现成的一流模式。 有两种方法可以实现这一点: 宏。广泛应用于测试工具,例如EUnit和PROPERT。例如,EUnit有一个?assertMatch宏,它实际上是一个一流模式的示例: ?assertMatch({ok,},结果)

在Erlang中是否有对的支持

f(SomeMagicPattern) ->
  receive
    SomeMagicPattern -> ok
  end.

如果答案是否定的(支持),您知道实现这一目标的其他方法吗?例如,使用宏?

否,Erlang没有现成的一流模式。 有两种方法可以实现这一点:

  • 宏。广泛应用于测试工具,例如EUnit和PROPERT。例如,EUnit有一个?assertMatch宏,它实际上是一个一流模式的示例:

    ?assertMatch({ok,},结果)

  • 解析转换。编写起来更难,但可能更强大,因为使用它们,您可以访问Erlang抽象代码,并以任何您想要的方式完全重写它。这里有一个很好的链接,指向一系列有关解析转换的教程:


  • 正如demeshchuk指出的那样,情况并非如此

    然而,有人提议增加与该语言类似的内容:


    这是不是一个好主意是一个完全不同的问题

    Erlang没有一流的模式,这就是为什么我们在
    ETS
    和跟踪中有匹配模式的原因。不优雅但必要。