Del via


BinaryFormat.Group

Syntaks

BinaryFormat.Group(binaryFormat as function, group as list, optional extra as nullable function, optional lastKey as any) as function

Om

Parameterne er som følger:

  • Parameteren binaryFormat angir det binære formatet for nøkkelverdien.
  • Parameteren group gir informasjon om gruppen med kjente elementer.
  • Den valgfrie extra parameteren kan brukes til å angi en funksjon som skal returnere en binær formatverdi for verdien etter en nøkkel som var uventet. Hvis parameteren extra ikke er angitt, utløses en feil hvis det finnes uventede nøkkelverdier.

Parameteren group angir en liste over elementdefinisjoner. Hver elementdefinisjon er en liste som inneholder 3-5 verdier, som følger:

  • Nøkkelverdi. Verdien for nøkkelen som tilsvarer elementet. Dette må være unikt i settet med elementer.
  • Elementformat. Det binære formatet som tilsvarer verdien for elementet. Dette gjør at hvert element kan ha et annet format.
  • Elementhendelse. BinaryOccurrence.Type-verdien for hvor mange ganger elementet forventes å vises i gruppen. Obligatoriske elementer som ikke finnes, forårsaker en feil. Obligatoriske eller valgfrie duplikatelementer håndteres som uventede nøkkelverdier.
  • Standard elementverdi (valgfritt). Hvis standard elementverdi vises i elementdefinisjonslisten og ikke er null, brukes den i stedet for standardverdien. Standardverdien for gjentatte eller valgfrie elementer er null, og standardverdien for gjentatte verdier er en tom liste { }.
  • Elementverditransformering (valgfritt). Hvis funksjonen for transformasjon av elementverdi finnes i elementdefinisjonslisten og ikke er null, kalles den for å transformere elementverdien før den returneres. Transformeringsfunksjonen kalles bare hvis elementet vises i inndataene (det kalles aldri med standardverdien).

Eksempel 1

Følgende forutsetter en nøkkelverdi som er en enkelt byte, med fire forventede elementer i gruppen, som alle har en byte med data som følger nøkkelen. Elementene vises i inndataene som følger:

  • Nøkkel 1 er obligatorisk, og vises med verdi 11.
  • Nøkkel 2 gjentas, og vises to ganger med verdi 22, og resulterer i en verdi på { 22, 22 }.
  • Nøkkel 3 er valgfritt, og vises ikke, og resulterer i en verdi på null.
  • Nøkkel 4 gjentas, men vises ikke, og resulterer i en verdi av { }.
  • Nøkkel 5 er ikke en del av gruppen, men vises én gang med verdi 55. Den ekstra funksjonen kalles med nøkkelverdien 5, og returnerer formatet som tilsvarer denne verdien (BinaryFormat.Byte). Verdien 55 leses og forkastes.

Bruk

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)

Utdata

{11, {22, 22}, null, {}}

Eksempel 2

Følgende eksempel illustrerer elementverditransformeringen og standard elementverdi. Det gjentatte elementet med nøkkel 1 summerer listen over verdier som leses ved hjelp av List.Sum. Det valgfrie elementet med nøkkel 2 har en standardverdi på 123 i stedet for null.

Bruk

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)

Utdata

{203, 123}