Erlang中模式匹配字符串的正确方法

Posted

技术标签:

【中文标题】Erlang中模式匹配字符串的正确方法【英文标题】:Correct way of pattern matching Strings in Erlang 【发布时间】:2015-05-29 05:10:35 【问题描述】:

这些方法中哪一种更适合 erlang 中的模式匹配字符串?

receiveString("someString") -> %doStuff;
receiveString("differentString") -> %doOtherStuff.

receiveString(A) when A == "someString" -> %doStuff;
receiveString(A) when A == "differentString" -> %doOtherStuff.

另外,是否可以有多个when 子句?

【问题讨论】:

【参考方案1】:

它们是等价的,但第一个对我来说肯定更具可读性,因为它更直接。

所以我会选择第一个!


你可以有几个用逗号分隔的保护表达式:

recieveString(A, B) when A == "some", B == "other" -> %doStuff;

【讨论】:

以上是关于Erlang中模式匹配字符串的正确方法的主要内容,如果未能解决你的问题,请参考以下文章

Erlang中二进制字符串的棘手模式匹配

为什么在erlang中对此字符串进行模式匹配会导致尾部的“字符串”和列表的ascii值?

Erlang函数与模式匹配

为啥 OCaml 模式匹配比 Erlang 弱?

在erlang中列出尾部模式匹配

Erlang 模式匹配顺序