BinaryFormat.Group
BinaryFormat.Group(binaryFormat as function, group as list, optional extra as nullable function, optional lastKey as any) as function
Parametrene er som følger:
- Parameteren
binaryFormat
angiver nøgleværdiens binære format. - Parameteren
group
indeholder oplysninger om gruppen af kendte elementer. - Den valgfri
extra
parameter kan bruges til at angive en funktion, der returnerer en binær formatværdi for værdien efter en hvilken som helst nøgle, der var uventet. Hvis parameterenextra
ikke er angivet, udløses der en fejl, hvis der er uventede nøgleværdier.
Parameteren group
angiver en liste over elementdefinitioner. Hver elementdefinition er en liste, der indeholder 3-5 værdier, som følger:
- Nøgleværdi. Værdien af den nøgle, der svarer til elementet. Dette skal være entydigt i sættet af elementer.
- Elementformat. Det binære format, der svarer til værdien af elementet. Dette gør det muligt for hvert element at have et andet format.
- Elementforekomst. Den BinaryOccurrence.Type værdi for, hvor mange gange elementet forventes at blive vist i gruppen. Obligatoriske elementer, der ikke er til stede, forårsager en fejl. Obligatoriske eller valgfrie dubletelementer håndteres som uventede nøgleværdier.
- Standardværdi (valgfri). Hvis standardværdien for elementet vises på elementdefinitionslisten og ikke er null, bruges den i stedet for standarden. Standarden for gentagne eller valgfrie elementer er null, og standarden for gentagne værdier er en tom liste { }.
- Transformation af elementværdi (valgfri). Hvis transformeringsfunktionen for elementværdien findes på elementdefinitionslisten og ikke er null, kaldes den for at transformere elementværdien, før den returneres. Transformationsfunktionen kaldes kun, hvis elementet vises i inputtet (den kaldes aldrig med standardværdien).
Følgende forudsætter en nøgleværdi, der er en enkelt byte, med fire forventede elementer i gruppen, som alle har en byte af data efter nøglen. Elementerne vises i inputtet på følgende måde:
- Nøgle 1 er påkrævet og vises med værdien 11.
- Nøgle 2 gentages og vises to gange med værdien 22 og resulterer i en værdi på { 22, 22 }.
- Nøgle 3 er valgfri og vises ikke og resulterer i en værdi på null.
- Nøgle 4 gentages, men vises ikke, og resulterer i en værdi på { }.
- Nøgle 5 er ikke en del af gruppen, men vises én gang med værdien 55. Den ekstra funktion kaldes med nøgleværdien 5 og returnerer det format, der svarer til den pågældende værdi (BinaryFormat.Byte). Værdien 55 læses og kasseres.
brug
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)
output
{11, {22, 22}, null, {}}
I følgende eksempel illustreres transformationen af elementværdien og standardværdien for elementet. Det gentagne element med nøgle 1 opsummerer listen over værdier, der læses ved hjælp af List.Sum. Det valgfrie element med nøgle 2 har en standardværdi på 123 i stedet for null.
brug
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)
output
{203, 123}