我有以二進制,我縮小到下面的玩具實例以提取一個二進制的前幾個比特匹配的可變數量的比特的一個問題:二進制位的參數匹配
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
爲什麼沒有第一種形式的工作?它不應該等同嗎?
位語法中的所有大小表達式都必須綁定。第二個參數在匹配第一個之前沒有被綁定,並且顛倒順序不會改變這個。看起來參數是獨立匹配的。 – dsmith 2012-04-17 13:03:57