Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Syntax
BinaryFormat.Choice(
binaryFormat as function,
chooseFunction as function,
optional type as nullable type,
optional combineFunction as nullable function
) as function
About
Gibt ein Binärformat zurück, das das nächste Binärformat basierend auf einem bereits gelesenen Wert auswäht. Der von dieser Funktion erzeugte Binärformatwert funktioniert in Phasen:
- Das durch den
binaryFormatParameter angegebene Binärformat wird verwendet, um einen Wert zu lesen. - Der Wert wird an die vom Parameter angegebene
chooseFunctionAuswahlfunktion übergeben. - Die Auswahlfunktion prüft den Wert und gibt ein zweites Binärformat zurück.
- Das zweite Binärformat wird verwendet, um einen zweiten Wert zu lesen.
- Wenn die Kombinationsfunktion angegeben ist, werden die ersten und zweiten Werte an die Kombinationsfunktion übergeben, und der resultierende Wert wird zurückgegeben.
- Wenn die Kombinationsfunktion nicht angegeben ist, wird der zweite Wert zurückgegeben.
- Der zweite Wert wird zurückgegeben.
Der optionale type Parameter gibt den Typ des Binärformats an, der von der Auswahlfunktion zurückgegeben wird. Entweder type any, , type listoder type binary kann angegeben werden. Wenn der type Parameter nicht angegeben ist, wird er type any verwendet. Wenn type list oder type binary verwendet wird, kann das System möglicherweise ein Streaming binary oder list einen Wert anstelle eines gepufferten Zurückgebens, wodurch die zum Lesen des Formats erforderliche Arbeitsspeichermenge reduziert werden kann.
Beispiel 1
Lesen Sie eine Liste von Bytes, in der die Anzahl der Elemente durch das erste Byte bestimmt wird.
Verwendung
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.List(BinaryFormat.Byte, length)
)
in
listFormat(binaryData)
Output
{3,4}
Beispiel 2
Lesen Sie eine Liste von Bytes, in der die Anzahl der Elemente durch das erste Byte bestimmt wird, und bewahren Sie das erste Byte-Lesevorgang auf.
Verwendung
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}]
Beispiel 3
Lesen Sie eine Liste von Bytes, in der die Anzahl der Elemente durch das erste Byte mithilfe einer Streamingliste bestimmt wird.
Verwendung
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}