我有以下代码.我正在检查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.
ipinak.. 9
Erlang只允许这些守卫:
原子是真的
其他常量(术语和绑定变量)都被认为是假的
调用表类型测试BIF中指定的BIF
术语比较
算术表达式
布尔表达式
短路表达式(也是/ orelse)
欲了解更多信息,请访问http://www.erlang.org/doc/reference_manual/expressions.html#id83606
而不是true
使用andalso
.不能使用orelse
在_
,只是在true
说明,也看看的文档.
Erlang只允许这些守卫:
原子是真的
其他常量(术语和绑定变量)都被认为是假的
调用表类型测试BIF中指定的BIF
术语比较
算术表达式
布尔表达式
短路表达式(也是/ orelse)
欲了解更多信息,请访问http://www.erlang.org/doc/reference_manual/expressions.html#id83606
而不是true
使用andalso
.不能使用orelse
在_
,只是在true
说明,也看看的文档.