Jaa


BinaryFormat.Group

Syntaksi

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

Noin

Parametrit ovat seuraavat:

  • binaryFormat-parametri määrittää avaimen arvon binaarimuodon.
  • group-parametri antaa tietoja tunnettujen kohteiden ryhmästä.
  • Valinnaista extra-parametria voidaan käyttää määrittämään funktio, joka palauttaa binaarimuotoarvon odottamattomia avaimiä seuraaville arvoille. Jos extra-parametria ei määritetä, ilmenee virhe, jos odottamattomia avainarvoja on olemassa.

group-parametri määrittää kohdemääritysten luettelon. Jokainen kohdemääritys on luettelo, joka sisältää 3–5 arvoa seuraavasti:

  • Avainarvo. Kohdetta vastaavan avaimen arvo. Tämän on oltava yksilöivä kohdejoukon sisällä.
  • Kohteen muoto. Kohteen arvoa vastaava binaarimuoto. Näin kukin kohde voi olla eri muotoa.
  • Kohteen esiintymä. BinaryOccurrence.Type arvo sille, montako kertaa kohteen odotetaan esiintyvän ryhmässä. Pakolliset kohteet, joita ei ole olemassa, aiheuttavat virheen. Pakolliset tai valinnaiset kohteiden kaksoiskappaleet käsitellään odottamattomien avainarvojen tavoin.
  • Oletuskohdearvo (valinnainen). Jos oletuskohdearvo näkyy kohdemääritysluettelossa, eikä se ole tyhjäarvo, sitä käytetään oletusarvon sijaan. Toistuvien tai valinnaisten kohteiden oletusarvo on tyhjäarvo, ja toistuvien arvojen oletusarvo on tyhjä luettelo { }.
  • Kohteen arvon muunnos (valinnainen). Jos kohteen arvon muunnosfunktio on kohdemääritysluettelossa, eikä se ole tyhjäarvo, sitä kutsutaan muuntamaan kohteen arvo, ennen kuin se palautetaan. Muunnosfunktiota kutsutaan vain, jos kohde näkyy syötteessä (sitä ei koskaan kutsuta käyttäen oletusarvoa).

Esimerkki 1

Seuraavassa oletetaan avaimen arvo, joka on yksittäinen tavu, ja ryhmässä neljä odotettua kohdetta, joista kaikilla on tavu tietoja avaimen jälkeen. Kohteet näkyvät syötteessä seuraavasti:

  • Avain 1 vaaditaan, ja se on näkyvissä käyttäen arvoa 11.
  • Avain 2 toistetaan ja on olemassa kahdesti käyttäen arvoa 22. Tämän tuloksena on arvo { 22, 22 }.
  • Avain 3 on valinnainen, eikä sitä ole. Tämän tuloksena oleva arvo on tyhjäarvo.
  • Avain 4 toistetaan, mutta sitä ei ole. Tämän tuloksena oleva arvo on { }.
  • Avain 5 ei ole osa ryhmää, mutta se on olemassa kerran käyttäen arvoa 55. Lisäfunktiota kutsutaan käyttäen avaimen arvoa 5, ja se palauttaa kyseistä arvoa vastaavan muodon (BinaryFormat.Byte). Arvo 55 luetaan ja hylätään.

käyttö

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, {}}

Esimerkki 2

Seuraavassa esimerkissä havainnollistetaan kohteen arvon muunnoksen ja oletusarvon arvoa. Toistuva kohde, jolla on avain 1, laskee luettujen arvojen summan käyttäen List.Sum. Valinnaisella kohteella, jolla on avain 2, on oletusarvo 123 tyhjäarvon sijaan.

käyttö

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}