Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Sintassi
BinaryFormat.Choice(
binaryFormat as function,
chooseFunction as function,
optional type as nullable type,
optional combineFunction as nullable function
) as function
Informazioni su
Restituisce un formato binario che sceglie il formato binario successivo in base a un valore che è già stato letto. Il valore del formato binario prodotto dalla funzione opera in fasi:
- Il formato binario specificato dal parametro
binaryFormatviene usato per leggere un valore. - Il valore viene passato alla funzione di scelta specificata dal parametro
chooseFunction. - La funzione di scelta controlla il valore e restituisce un secondo formato binario.
- Il secondo formato binario viene usato per leggere un secondo valore.
- Se la funzione di combinazione viene specificata, il primo e il secondo valore vengono passati alla funzione di combinazione e viene restituito il valore risultante.
- Se la funzione di combinazione non viene specificata, viene restituito il secondo valore.
- Il secondo valore viene restituito.
Il parametro facoltativo type specifica il tipo di formato binario che verrà restituito dalla funzione di scelta. È possibile specificare type any, type list o type binary. Se il parametro type non è specificato, viene usato type any. Se si usa type list o type binary, il sistema può essere in grado di restituire un valore binary o list di flusso anziché uno memorizzato nel buffer, riducendo in tal modo la quantità di memoria necessaria per leggere il formato.
Esempio 1
Leggere un elenco di byte in cui il numero di elementi è determinato dal primo byte.
Utilizzo
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.List(BinaryFormat.Byte, length)
)
in
listFormat(binaryData)
Output
{3,4}
Esempio 2
Leggere un elenco di byte in cui il numero di elementi è determinato dal primo byte e conservare il primo byte letto.
Utilizzo
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}]
Esempio 3
Leggere un elenco di byte in cui il numero di elementi è determinato dal primo byte usando una lista streaming.
Utilizzo
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}