我经常处理使用某种类型的 COMMAND|LENGTH|PARAMETERS 结构交换信息的“二进制”协议,其中 PARAMETERS 是任意数量的 TAG|LENGTH|VALUE 元组。Erlang 通过模式匹配来提取消息中的值,例如:
M = <<1, 4, 1, 2, 16#abcd:16>>.
<<1,4,1,2,171,205>>
使用 M 位串(遵循 COMMAND|LENGTH|PARAMETERS 格式的消息),我可以利用 Erlang 模式匹配来提取命令、长度、参数:
<<Command:8,Length:8,Parameters/binary>> = M.
<<1,4,1,2,171,205>>
Parameters.
<<1,2,171,205>>
对于管理面向“位半字节”的协议,这是无价的!
是否有任何其他语言接近支持这样的语法,即使通过附加库也是如此?