Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Sözdizimi
BinaryFormat.Choice(
binaryFormat as function,
chooseFunction as function,
optional type as nullable type,
optional combineFunction as nullable function
) as function
Hakkında
Daha önce okunmuş bir değere bağlı olarak bir sonraki ikili biçimi seçen bir biçimi döndürür. Bu işlev tarafından üretilen ikili biçim değeri aşamalar halinde çalışır:
-
binaryFormatparametresi tarafından belirtilen ikili biçim, bir değeri okumak için kullanılır. - Değer,
chooseFunctionparametresi 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 listveya 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}