BinaryFormat.Group
Syntaksi
BinaryFormat.Group(binaryFormat as function, group as list, optional extra as nullable function, optional lastKey as any) as function
Tietoja
Parametrit ovat seuraavat:
binaryFormat
Parametri määrittää avaimen arvon binaarimuodon.group
Parametri antaa tietoja tunnettujen kohteiden ryhmästä.- Valinnaisen
extra
parametrin avulla voidaan määrittää funktio, joka palauttaa binaarimuotoarvon odottamattomia avaimiä seuraaville arvoille. Jos parametriaextra
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 määrittää, 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)
Tuloste
{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 kohdetta 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)
Tuloste
{203, 123}