Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Syntaks
BinaryFormat.Choice(
binaryFormat as function,
chooseFunction as function,
optional type as nullable type,
optional combineFunction as nullable function
) as function
Omtrent
Returnerer et binært format, der vælger det næste binære format baseret på en værdi, der allerede er læst. Den binære formatværdi, der produceres af denne funktion, fungerer i faser:
- Det binære format, der er angivet i parameteren
binaryFormat, bruges til at læse en værdi. - Værdien overføres til den valgfunktion, der er angivet af parameteren
chooseFunction. - Valgfunktionen undersøger værdien og returnerer et andet binært format.
- Det andet binære format bruges til at læse en anden værdi.
- Hvis kombinationsfunktionen er angivet, overføres den første og den anden værdi til kombiner-funktionen, og den resulterende værdi returneres.
- Hvis kombinationsfunktionen ikke er angivet, returneres den anden værdi.
- Den anden værdi returneres.
Den valgfri type parameter angiver den type binært format, der returneres af valgfunktionen. Enten type any, type listeller type binary kan angives. Hvis parameteren type ikke er angivet, bruges type any. Hvis type list eller type binary bruges, kan systemet muligvis returnere en streaming-binary eller list værdi i stedet for en buffer, hvilket kan reducere mængden af hukommelse, der er nødvendig for at læse formatet.
Eksempel 1
Læs en liste over byte, hvor antallet af elementer bestemmes af den første byte.
brug
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.List(BinaryFormat.Byte, length)
)
in
listFormat(binaryData)
output
{3,4}
Eksempel 2
Læs en liste over byte, hvor antallet af elementer bestemmes af den første byte, og bevar den første bytelæsning.
brug
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.Record([
length = length,
list = BinaryFormat.List(BinaryFormat.Byte, length)
])
)
in
listFormat(binaryData)
output
[length = 2, list = {3, 4}]
Eksempel 3
Læs en liste over byte, hvor antallet af elementer bestemmes af den første byte ved hjælp af en streamingliste.
brug
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.List(BinaryFormat.Byte, length),
type list
)
in
listFormat(binaryData)
output
{3, 4}