模式匹配中的非法位大小

Posted

技术标签:

【中文标题】模式匹配中的非法位大小【英文标题】:illegal bit size in pattern matching 【发布时间】:2015-06-11 23:08:42 【问题描述】:

我有字段,必须检查它是否有这样的视图 >

我做

try
    <<"", _/binary>> = FieldName
  catch
    _:_ ->
      throw(error)
  end,
  Size = byte_size(FieldName),
  try
    <<_:(Size-2)/binary, "">> = FieldName
  catch
    _:_ ->
      throw(error)
  end

匹配字段名尾部时得到“* 1: 非法位大小”

【问题讨论】:

【参考方案1】:

看起来不错 我找到了解决办法

构造二进制时支持表达式 (Size-2)。这 肯定是模式匹配,所以如上所述:Size 必须是 常量表达式或变量。不是要评估的表达式 运行时。

所有答案 http://erlang.org/pipermail/erlang-questions/2012-December/071145.html

【讨论】:

以上是关于模式匹配中的非法位大小的主要内容,如果未能解决你的问题,请参考以下文章

与 Erlang 中的映射模式匹配时的非法表达式

在案例模式匹配中调用函数是非法模式吗?

正则表达式用来根据某种匹配模式寻找字符串中的某些单词。

正则表达式与特定模式完全匹配 10 位数字

Nginx中if语句中的判断条件

nginx配置—之location模式匹配