BinaryFormat.Group
BinaryFormat.Group(binaryFormat as function, group as list, optional extra as nullable function, optional lastKey as any) as function
A paraméterek a következők:
- A
binaryFormat
paraméter a kulcsérték bináris formátumát adja meg. - A
group
paraméter információt nyújt az ismert elemek csoportjáról. - Az opcionális
extra
paraméterrel megadhat egy függvényt, amely bináris formátumértéket ad vissza az értékhez a váratlan kulcsok után. Ha aextra
paraméter nincs megadva, a rendszer hibát jelez, ha nem várt kulcsértékek vannak.
A group
paraméter az elemdefiníciók listáját adja meg. Minden elemdefiníció egy lista, amely 3–5 értéket tartalmaz az alábbiak szerint:
- Kulcsérték. Az elemnek megfelelő kulcs értéke. Ennek egyedinek kell lennie az elemek készletén belül.
- Elemformátum. Az elem értékének megfelelő bináris formátum. Ez lehetővé teszi, hogy minden elemnek más formátuma legyen.
- Elem előfordulása. Az a BinaryOccurrence.Type érték, amely szerint az elem várhatóan hányszor jelenik meg a csoportban. A nem található kötelező elemek hibát okoznak. A szükséges vagy nem kötelező ismétlődő elemeket váratlan kulcsértékekként kezeli a rendszer.
- Alapértelmezett elemérték (nem kötelező). Ha az alapértelmezett elemérték megjelenik az elemdefiníciós listában, és nem null értékű, akkor az alapértelmezett helyett az lesz használva. Az ismétlődő vagy választható elemek alapértelmezett értéke null, az ismétlődő értékek alapértelmezett értéke pedig egy üres lista { }.
- Elemérték átalakítása (nem kötelező). Ha az elemérték-átalakító függvény szerepel az elemdefiníciós listában, és nem null értékű, akkor a rendszer meghívja az elemérték átalakítására a visszaadása előtt. Az átalakító függvény csak akkor lesz meghívva, ha az elem megjelenik a bemenetben (az alapértelmezett értékkel soha nem hívja meg).
Az alábbiakban egy egyetlen bájtból álló kulcsértéket feltételezünk, amelyben 4 várt elem szerepel a csoportban, amelyek mindegyike egy bájtnyi adattal rendelkezik a kulcs után. Az elemek a következőképpen jelennek meg a bemenetben:
- Az 1. kulcs megadása kötelező, és 11 értékkel jelenik meg.
- A 2. kulcs ismétlődik, és kétszer jelenik meg a 22 értékkel, és {22, 22 } értéket eredményez.
- A 3. kulcs megadása nem kötelező, és nem jelenik meg, és null értéket eredményez.
- A 4. kulcs ismétlődik, de nem jelenik meg, és {} értéket eredményez.
- Az 5. kulcs nem része a csoportnak, de egyszer megjelenik az 55-ös értékkel. Az extra függvény az 5 kulcsértékkel van meghívva, és az adott értéknek megfelelő formátumot adja vissza (BinaryFormat.Byte). Az 55 értéket a rendszer felolvassa és elveti.
Felhasználás
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)
kimeneti
{11, {22, 22}, null, {}}
Az alábbi példa az elem értékátalakítását és az alapértelmezett elemértéket szemlélteti. Az 1. kulccsal rendelkező ismétlődő elem összegzi a List.Sumhasználatával beolvasott értékek listáját. A kulccsal 2 rendelkező nem kötelező elem alapértelmezett értéke 123 a null helyett.
Használat
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)
kimeneti
{203, 123}