BinaryFormat.Choice
BinaryFormat.Choice(binaryFormat as function, choice as function, optional type as nullable type) as function
返回一个二进制格式,它基于已读取的值选择下一个二进制格式。 由此函数生成的二进制格式值的工作方式分为以下几个阶段:
binaryFormat
参数指定的二进制格式读取一个值。chooseFunction
参数指定的选择函数。type
参数指示选择函数将返回的二进制格式的类型。 或者可以指定 type any
、type list
或 type binary
。 如果未指定 type
参数,则使用 type any
。 如果使用了 type list
或 type binary
,则系统可能能够返回流式 binary
或 list
值,而不是缓冲后的值,这可以减少读取该格式所需的内存量。
示例:
读取字节的列表,其中的元素数目由第一个字节确定。
使用情况:
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.List(BinaryFormat.Byte, length))
in
listFormat(binaryData)
输出:
{3, 4}
示例:
读取字节的列表,其中的元素数目由第一个字节确定,并且保留读取的第一个字节。
使用情况:
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.Record([
length = length,
list = BinaryFormat.List(BinaryFormat.Byte, length)
]))
in
listFormat(binaryData)
输出:
[ length = 2, list = {3, 4} ]
示例:
读取字节的列表,其中的元素数目通过使用流式列表由第一个字节确定。
使用情况:
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.List(BinaryFormat.Byte, length),
type list)
in
listFormat(binaryData)
输出:
{3, 4}