Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Syntax
BinaryFormat.Choice(
binaryFormat as function,
chooseFunction as function,
optional type as nullable type,
optional combineFunction as nullable function
) as function
Om
Returnerar ett binärt format som väljer nästa binära format baserat på ett värde som redan har lästs. Värdet för binärt format som skapas av den här funktionen fungerar i steg:
- Det binära format som anges av parametern
binaryFormatanvänds för att läsa ett värde. - Värdet skickas till den valfunktion som anges av parametern
chooseFunction. - Valfunktionen inspekterar värdet och returnerar ett andra binärt format.
- Det andra binära formatet används för att läsa ett andra värde.
- Om kombinationsfunktionen har angetts skickas de första och andra värdena till kombinationsfunktionen och det resulterande värdet returneras.
- Om kombinationsfunktionen inte har angetts returneras det andra värdet.
- Det andra värdet returneras.
Den valfria parametern type anger vilken typ av binärt format som ska returneras av valfunktionen. Antingen type any, type listeller type binary kan anges. Om parametern type inte har angetts används type any. Om type list eller type binary används kan systemet returnera ett strömmande binary eller list värde i stället för ett buffrat värde, vilket kan minska mängden minne som krävs för att läsa formatet.
Exempel 1
Läs en lista över byte där antalet element bestäms av den första byteen.
Användning
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.List(BinaryFormat.Byte, length)
)
in
listFormat(binaryData)
utdata
{3,4}
Exempel 2
Läs en lista över byte där antalet element bestäms av den första byteen och bevara den första byteläsningen.
Användning
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)
utdata
[length = 2, list = {3, 4}]
Exempel 3
Läs en lista med byte där antalet element bestäms av den första byteen med hjälp av en strömningslista.
Användning
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.List(BinaryFormat.Byte, length),
type list
)
in
listFormat(binaryData)
utdata
{3, 4}