macros - Erlang 中的一等模式?

标签 macros erlang language-features first-class

是否有任何支持 first-class patterns 在 Erlang 中?

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

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

最佳答案

不,Erlang 没有开箱即用的一等模式。 有两种实现方法:

  1. 宏。广泛使用,例如在 EUnit 和 PropEr 等测试工具中。比如说,EUnit 有一个 ?assertMatch 宏,它实际上是一等模式的示例:

    ?assertMatch({ok, _}, 结果)

  2. 解析转换。更难编写,但可能更强大,因为使用它们您可以访问 Erlang 抽象代码并以您想要的任何方式完全重写它。这里有一个关于解析转换的一系列教程的很好的链接:Is there a good, complete tutorial on Erlang parse transforms available?

关于macros - Erlang 中的一等模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12600928/

相关文章:

c - 宏函数的不需要的(或不稳定的)结果

erlang - Erlang 内存的简单例子

erlang - 如何安装 erlydtl 以使其在氮气中可用?

ssl - 传递给 ssl verify_fun 函数的 UserState 变量是什么

c - 为什么在 POSIX/IEEE 标准中 pthread_mutexattr_settype() 需要 _GNU_SOURCE 宏?

c - 我需要帮助理解下面代码中两个的替换

macros - SPSS - 通过操作另一个参数为宏参数赋值

c++ - 如何获取 __COUNTER__ 的最后一个值

ruby - 为什么 () 在 Ruby 中返回 nil?

windows-xp - 如何从 cmd 中找到当前的 Windows 语言?