BinaryFormat.Choice
Zaten kullanılan bir değere dayalı olan bir sonraki ikili biçimi seçen bir ikili biçimi döndürür.
Syntax
BinaryFormat.Choice(
binaryFormat as function,
chooseFunction as function,
optional type as type,
optional combineFunction as function
) as function
Remarks
Zaten kullanılan bir değere dayalı olan bir sonraki ikili biçimi seçen bir ikili biçimi döndürür. Bu işlev tarafından oluşturulan ikili biçim değeri şu aşamalarda çalışır:
-
binaryFormatparametresi tarafından belirtilen ikili biçimi bir değer okumak için kullanılır. - Değer
chooseFunctionparametresi tarafından belirtilen seçim işlevine geçirilir. - Seçim işlevi değeri denetler ve ikinci bir ikili biçimi döndürür.
- İkinci ikili biçimi ikinci bir değeri okumak için kullanılır.
- Birleştirme işlevi belirtilirse, birinci ve ikinci değerler birleştirme işlevine geçirilir ve sonuç değeri döndürülür.
- Birleştirme işlevi belirtilmezse, ikinci değer döndürülür.
- İkinci değer döndürülür.
type parametresi, seçim işlevi tarafından döndürülecek ikili biçiminin türünü belirtir. type any, type list veya type binary belirtilebilir. type parametresi belirtilmezse, type any kullanılır. type list veya type binary kullanılırsa, sistem arabelleğe alınan bir değer yerine akış yapan bir binary veya list değeri döndürebilir; bu, biçimi okumak için gerekli bellek miktarını azaltabilir.
Examples
Example #1
Öğe sayısının ilk bayt tarafından belirlendiği bayt listesini okur.
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.List(BinaryFormat.Byte, length)
)
in
listFormat(binaryData)
Result:
{3, 4}
Example #2
Öğe sayısının ilk bayt tarafından belirlendiği bayt listesini okuyun ve okunan ilk baytı korur.
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)
Result:
[length = 2, list = {3, 4}]
Example #3
Akış yapan bir liste kullanarak öğe sayısının ilk bayt tarafından belirlendiği bayt listesini okur.
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.List(BinaryFormat.Byte, length),
type list
)
in
listFormat(binaryData)
Result:
{3, 4}
Category
Binary Formats.Controlling what comes next