【发布时间】:2014-11-17 13:43:18
【问题描述】:
我有一个可能包含一个或多个数据帧的Byte[] 缓冲区,我需要读取第一个字节才能知道实际帧的长度。
这是我想做的“非工作”版本:
let extractFrame (buffer:byte[]) =
match buffer with
| [|head1;head2;head3;..|] when head2 < (byte)128 -> processDataFrame buffer head2
| <...others....>
| _ -> raise(new System.Exception())
基本上,我需要评估前三个字节,然后使用缓冲区和帧的实际长度调用processDataFrame。根据标头,帧可以是数据、控件等...
这可以通过任何类型的匹配(列表、序列、...等...)来完成吗?或者我是否必须创建另一个只有标题长度的小数组?(我想避免这种情况)。
【问题讨论】:
-
用 if/then 评估前三个字节不是更容易吗?
-
这就是我想要找出的......有很多情况,我想知道在 F# 中这样做的正确方法
标签: arrays f# pattern-matching f#-3.0