当前位置:  开发笔记 > 编程语言 > 正文

在卫兵中使用功能时的二郎"非法守卫表达"

如何解决《在卫兵中使用功能时的二郎"非法守卫表达"》经验,为你挑选了1个好方法。

我有以下代码.我正在检查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说明,也看看的文档.



1> ipinak..:

Erlang只允许这些守卫:

原子是真的

其他常量(术语和绑定变量)都被认为是假的

调用表类型测试BIF中指定的BIF

术语比较

算术表达式

布尔表达式

短路表达式(也是/ orelse)

欲了解更多信息,请访问http://www.erlang.org/doc/reference_manual/expressions.html#id83606

而不是true使用andalso.不能使用orelse_,只是在true说明,也看看的文档.

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有