Erlang 中是否支持一流的模式?
f(SomeMagicPattern) ->
receive
SomeMagicPattern -> ok
end.
如果答案是否定的(支持),您知道实现此目的的任何其他方法吗?例如,使用宏?
Erlang 中是否支持一流的模式?
f(SomeMagicPattern) ->
receive
SomeMagicPattern -> ok
end.
如果答案是否定的(支持),您知道实现此目的的任何其他方法吗?例如,使用宏?
不,Erlang 没有开箱即用的一流模式。有两种实现方式:
宏。广泛使用,例如在 EUnit 和 PropEr 等测试工具中。比如说,EUnit 有一个 ?assertMatch 宏,它实际上是一流模式的一个示例:
?assertMatch({ok, _}, 结果)
解析变换。更难编写,但可能更强大,因为使用它们你可以访问 Erlang 抽象代码并以任何你想要的方式完全重写它。这里有一个很好的链接到一系列关于解析转换的教程:是否有一个关于 Erlang 解析转换的好、完整的教程可用?
正如 demeshchuk 指出的那样,情况并非如此。
然而,有人提议添加类似于该语言的内容:
http://www.erlang.org/eeps/eep-0029.html
这是否是一个好主意是一个完全不同的问题......