BinaryFormat.Choice
Sözdizimi
BinaryFormat.Choice(binaryFormat as function, chooseFunction as function, optional type as nullable type, optional combineFunction as nullable function) as function
Hakkında
Önceden okunmuş bir değere göre bir sonraki ikili biçimi seçen ikili biçimi döndürür. Bu işlev tarafından üretilen ikili biçim değeri aşamalar halinde çalışır:
-
binaryFormat
parametresi tarafından belirtilen ikili biçim, bir değeri okumak için kullanılır. - Değer,
chooseFunction
parametresi tarafından belirtilen choice işlevine geçirilir. - Choice işlevi değeri inceler ve ikinci bir ikili biçim döndürür.
- İkinci ikili biçim, ikinci bir değeri okumak için kullanılır.
- Combine işlevi belirtilirse, birinci ve ikinci değerler combine işlevine geçirilir ve sonuçta elde edilen değer döndürülür.
- Combine işlevi belirtilmezse, ikinci değer döndürülür.
- İkinci değer döndürülür.
İsteğe bağlı type
parametresi, choice işlevi tarafından döndürülecek ikili biçimin türünü gösterir.
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ınmış bir değer yerine akışkan bir binary
veya list
değeri döndürebilir. Bu da biçimin okunması için gereken bellek miktarını azaltabilir.
Örnek 1
Öğelerin sayısının ilk bayt tarafından belirlendiği bayt listesini okuyun.
Kullanım
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.List(BinaryFormat.Byte, length)
)
in
listFormat(binaryData)
Çıkış
{3,4}
Örnek 2
Bayt sayısının ilk bayt tarafından belirlendiği bir bayt listesini okuyun ve okunan ilk baytı saklayın.
Kullanım
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)
Çıkış
[length = 2, list = {3, 4}]
Örnek 3
Akış listesi kullanarak, öğe sayısının ilk bayt tarafından belirlendiği bir bayt listesini okuyun.
Kullanım
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.List(BinaryFormat.Byte, length),
type list
)
in
listFormat(binaryData)
Çıkış
{3, 4}