BinaryFormat.Group
Syntax
BinaryFormat.Group(binaryFormat as function, group as list, optional extra as nullable function, optional lastKey as any) as function
O
Parametre sú nasledovné:
- Parameter
binaryFormat
určuje binárny formát hodnoty kľúča. - Parameter
group
poskytuje informácie o skupine známych položiek. - Voliteľný parameter
extra
možno použiť na zadanie funkcie, ktorá vráti hodnotu binárneho formátu pre hodnotu nasledujúcu za neočakávaným kľúčom. Ak parameterextra
nie je zadaný, v prípade výskytu neočakávaných hodnôt kľúča sa vyskytne chyba.
Parameter group
určuje zoznam definícií položiek. Každá definícia položky je zoznam obsahujúci 3 – 5 hodnôt nasledovne:
- Hodnota kľúča. Hodnota kľúča, ktorá zodpovedá položke. Táto položka musí byť jedinečná v rámci množiny položiek.
- Formát položky. Binárny formát zodpovedajúci hodnote položky. To umožňuje každej položke mať iný formát.
- Výskyt položky. hodnota BinaryOccurrence.Type určuje, koľkokrát sa očakáva, že položka sa zobrazí v skupine. Neprídu požadované položky, ktoré sa nenachádzajú. Povinné alebo voliteľné duplicitné položky sa správajú ako neočakávané hodnoty kľúča.
- Predvolená hodnota položky (voliteľná). Ak sa predvolená hodnota položky zobrazí v zozname definícií položiek a nemá hodnotu null, použije sa namiesto predvoleného nastavenia. Predvolená hodnota pre opakujúce sa alebo voliteľné položky je null a predvolená hodnota pre opakujúce sa hodnoty je prázdny zoznam { }.
- Transformácia hodnoty položky (voliteľná). Ak je funkcia transformácie hodnoty položky prítomná v zozname definícií položiek a nemá hodnotu null, zavolá sa na transformáciu hodnoty položky ešte pred jej vrátením. Funkcia transformácie sa volá len vtedy, ak sa položka zobrazí vo vstupe (nikdy sa nevolá s predvolenou hodnotou).
Príklad č. 1
Nasledujúca hodnota predpokladá jednobajtovú hodnotu kľúča so 4 očakávanými položkami v skupine. Všetky tieto položky majú za kľúčom bajt údajov. Položky sa zobrazia na vstupe nasledovne:
- Vyžaduje sa kľúč 1 a zobrazí sa s hodnotou 11.
- Kľúč 2 sa opakuje a zobrazí sa dvakrát s hodnotou 22 a výsledkom je hodnota {22, 22 }.
- Kľúč 3 je voliteľný a nezobrazí sa. Výsledkom je hodnota null.
- Kľúč 4 sa opakuje, ale nezobrazí sa. Výsledkom je hodnota {}.
- Kľúč 5 nie je súčasťou skupiny, ale zobrazí sa raz s hodnotou 55. Dodatočná funkcia sa volá s hodnotou kľúča 5 a vráti formát zodpovedajúci tejto hodnote (BinaryFormat.Byte). Hodnota 55 sa prečíta a zahodí.
používania
let
b = #binary({
1, 11,
2, 22,
2, 22,
5, 55,
1, 11
}),
f = BinaryFormat.Group(
BinaryFormat.Byte,
{
{1, BinaryFormat.Byte, BinaryOccurrence.Required},
{2, BinaryFormat.Byte, BinaryOccurrence.Repeating},
{3, BinaryFormat.Byte, BinaryOccurrence.Optional},
{4, BinaryFormat.Byte, BinaryOccurrence.Repeating}
},
(extra) => BinaryFormat.Byte
)
in
f(b)
výstupu
{11, {22, 22}, null, {}}
Príklad č. 2
Nasledujúci príklad ilustruje transformáciu hodnoty položky a predvolenú hodnotu položky. Opakujúca sa položka s kľúčom 1 zhŕňa zoznam hodnôt prečítaných pomocou List.Sum. Voliteľná položka s kľúčom 2 má predvolenú hodnotu 123 namiesto hodnoty null.
používania
let
b = #binary({
1, 101,
1, 102
}),
f = BinaryFormat.Group(
BinaryFormat.Byte,
{
{1, BinaryFormat.Byte, BinaryOccurrence.Repeating,
0, (list) => List.Sum(list)},
{2, BinaryFormat.Byte, BinaryOccurrence.Optional, 123}
}
)
in
f(b)
výstupu
{203, 123}