【发布时间】:2019-11-22 10:22:43
【问题描述】:
我有以下代码。我正在检查 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.
【问题讨论】:
标签: erlang