Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Syntaxe
BinaryFormat.Choice(
binaryFormat as function,
chooseFunction as function,
optional type as nullable type,
optional combineFunction as nullable function
) as function
À propos
Retourne un format binaire qui choisit le format binaire suivant en fonction d’une valeur déjà lue. La valeur de format binaire produite par cette fonction fonctionne en phases :
- Le format binaire spécifié par le
binaryFormatparamètre est utilisé pour lire une valeur. - La valeur est transmise à la fonction de choix spécifiée par le
chooseFunctionparamètre. - La fonction de choix inspecte la valeur et retourne un deuxième format binaire.
- Le deuxième format binaire est utilisé pour lire une deuxième valeur.
- Si la fonction de combinaison est spécifiée, les premières et deuxième valeurs sont passées à la fonction de combinaison, et la valeur résultante est retournée.
- Si la fonction de combinaison n’est pas spécifiée, la deuxième valeur est retournée.
- La deuxième valeur est retournée.
Le paramètre facultatif type indique le type de format binaire qui sera retourné par la fonction de choix. Soit type any, type listsoit type binary peut être spécifié. Si le type paramètre n’est pas spécifié, type any il est utilisé. S’il type list est utilisé ou type binary utilisé, le système peut être en mesure de retourner un streaming binary ou list une valeur au lieu d’une valeur mise en mémoire tampon, ce qui peut réduire la quantité de mémoire nécessaire pour lire le format.
Exemple 1
Lisez une liste d’octets où le nombre d’éléments est déterminé par le premier octet.
Utilisation
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.List(BinaryFormat.Byte, length)
)
in
listFormat(binaryData)
Output
{3,4}
Exemple 2
Lisez une liste d’octets où le nombre d’éléments est déterminé par le premier octet et conservez la première lecture d’octets.
Utilisation
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}]
Exemple 3
Lisez une liste d’octets où le nombre d’éléments est déterminé par le premier octet à l’aide d’une liste de diffusion en continu.
Utilisation
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}