我有以下代码.我正在检查3个条件.您可以查看第一个条件,我将输出存储xml:get_tag_attr_s(...)在变量中,然后在if块中使用该变量.我的问题是我得到错误illegal guard expression,如果我尝试在一行中执行上述过程,就像我在其他两个条件中所做的那样.
此外,我variable '_' is unbound从默认条件.它应该是一回事.
有人可以解释一下这个问题吗?
validate_xmpp(Packet) ->
Type = xml:get_tag_attr_s(list_to_binary("type"), Packet),
if
(Type /= <<"chat">> ->
{error, "Message type is not chat"};
xml:get_path_s(Packet, [{elem, list_to_binary("body")}, cdata]) /= <<"">> ->
{error, "No or empty body"};
exml_query:path(Packet, [{element,<<"received">>},{attr,<<"xmlns">>}]) == <<"urn:xmpp:receipts">> ->
{error, "delivery-receipts should be ignored"};
_->
{ok, xml:get_tag_attr_s(list_to_binary("from"), Packet)}
end.
Run Code Online (Sandbox Code Playgroud)
Erlang只允许这些守卫:
欲了解更多信息,请访问http://www.erlang.org/doc/reference_manual/expressions.html#id83606
而不是true使用andalso.不能使用orelse在_,只是在true说明,也看看的文档.
| 归档时间: |
|
| 查看次数: |
1922 次 |
| 最近记录: |