BinaryFormat.Choice
語法
BinaryFormat.Choice(binaryFormat as function, chooseFunction as function, optional type as nullable type, optional combineFunction as nullable function) as function
關於
傳回二進位格式,此格式會根據已讀取的值選擇下一個二進位格式。 此函式所產生的二進位格式值會分階段運作:
binaryFormat
參數所指定的二進位格式是用來讀取值。- 此值會傳遞給
chooseFunction
參數所指定的選擇函式。 - 選擇函式會檢查值,並傳回第二個二進位格式。
- 第二個二進位格式是用來讀取第二個值。
- 如果已指定組合函式,則第一個和第二個值會傳遞給組合函式,並傳回產生的值。
- 如果未指定組合函式,則會傳回第二個值。
- 會傳回第二個值。
選擇性 type
參數表示選擇函式將傳回的二進位格式類型。 可以指定 type any
、type list
或 type binary
。 如果未指定 type
參數,則會使用 type any
。 如果使用 type list
或 type binary
,則系統可能會傳回串流 binary
或 list
值,而非緩衝的值,這可降低讀取格式所需的記憶體數量。
範例 1
讀取位元組清單,其項目數由第一個位元組決定。
使用方式
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.List(BinaryFormat.Byte, length)
)
in
listFormat(binaryData)
輸出
{3,4}
範例 2
讀取位元組清單,其項目數由第一個位元組決定,且會保留讀取的第一個位元組。
使用方式
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}]
範例 3
讀取一連串位元組,其項目數由使用資料流清單的第一個位元組來決定。
使用方式
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}