模式匹配中的非法位大小
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
【讨论】:
以上是关于模式匹配中的非法位大小的主要内容,如果未能解决你的问题,请参考以下文章