我在匹配二进制中的可变位数时遇到问题,我将其缩小到以下玩具示例以提取二进制的前几位:
f(<<H:Bits, _/binary>>, Bits) ->
H.
编译器(R15B01)告诉我variable 'Bits' is unbound
。另一方面,这很好用:
f(X, Bits) ->
<<H:Bits, _/binary>> = X,
H.
它符合我的预期,例如f(<<1,2,3,4>>, 8)
产量为 1,f(<<1,2,3,4>>, 16)
产量为 258。
为什么第一种形式不起作用?不应该是等价的吗?