BinaryFormat.Choice
Syntax
BinaryFormat.Choice(binaryFormat as function, chooseFunction as function, optional type as nullable type, optional combineFunction as nullable function) as function
O
Vráti binárny formát, ktorý vyberie nasledujúci binárny formát na základe už prečítanej hodnoty. Hodnota binárneho formátu vytvorená touto funkciou funguje v etapách:
- Binárny formát zadaný parametrom
binaryFormat
sa použije na prečítanie hodnoty. - Hodnota sa odovzdá funkcii výberu zadanej parametrom
chooseFunction
. - Funkcia výberu skontroluje hodnotu a vráti druhý binárny formát.
- Druhý binárny formát sa použije na prečítanie druhej hodnoty.
- Ak je zadaná funkcia kombinovania, prvá a druhá hodnota sa odovzdá funkcii kombinovania a vráti sa výsledná hodnota.
- Ak funkcia kombinovania nie je zadaná, vráti sa druhá hodnota.
- Vráti sa druhá hodnota.
Voliteľný parameter type
označuje typ binárneho formátu, ktorý vráti funkcia výberu. Možno zadať buď type any
, type list
, alebo type binary
. Ak parameter type
nie je zadaný, použije sa type any
. Ak sa použije type list
alebo type binary
, systém môže byť schopný vrátiť hodnotu binary
streamovania alebo list
hodnotu namiesto hodnoty v medzipamäte, čo môže znížiť množstvo pamäte potrebné na prečítanie formátu.
Príklad č. 1
Prečítajte zoznam bajtov, v ktorom je počet prvkov určený prvým bajtom.
používania
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.List(BinaryFormat.Byte, length)
)
in
listFormat(binaryData)
výstupu
{3,4}
Príklad č. 2
Prečítajte zoznam bajtov, v ktorom je počet prvkov určený prvým bajtom, a zachovajte prvý prečítaný bajt.
používania
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)
výstupu
[length = 2, list = {3, 4}]
Príklad č. 3
Prečítajte zoznam bajtov, v ktorom je počet prvkov určený prvým bajtom, a to pomocou zoznamu streamovania.
používania
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.List(BinaryFormat.Byte, length),
type list
)
in
listFormat(binaryData)
výstupu
{3, 4}