模式匹配中的非法位大小

时间:2015-04-07 11:09:03

标签: erlang pattern-matching bytestring

我有字段,必须检查它是否有此类视图<<“{{name_of_field}}”>>

我做

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

并在匹配FieldName的尾部时获取“* 1:非法位大小”

1 个答案:

答案 0 :(得分:2)

看起来不错 我找到了解决方案

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

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