Poznámka
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete sa skúsiť prihlásiť alebo zmeniť adresáre.
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete skúsiť zmeniť adresáre.
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
binaryFormatsa 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}