函数中的Erlang语法

3 erlang ejabberd

我在Ejabberd中找到了这段代码:

maybe_post_request([$< | _ ] = Data, Host, ClientIp)
Run Code Online (Sandbox Code Playgroud)

我不明白[$< | _ ] = DataData的功能是什么.有人可以解释一下吗?

Ste*_*ski 6

构造

[$< | _] = Data
Run Code Online (Sandbox Code Playgroud)

应用模式匹配Data,期望它是一个列表变量,其第一个元素是字符<,忽略其余的元素.在Erlang shell中尝试:

1> Data = "<foo>".
"<foo>"
2> [$<|_] = Data.
"<foo>"
Run Code Online (Sandbox Code Playgroud)

但如果Data不匹配,我们会得到一个例外:

3> f(Data), Data = "foo".
"foo"
4> [$<|_] = Data.
** exception error: no match of right hand side value "foo"
Run Code Online (Sandbox Code Playgroud)