BinaryFormat.Choice
BinaryFormat.Choice(binaryFormat as function, chooseFunction as function, optional type as nullable type, optional combineFunction as nullable function) as function
Mengembalikan format biner yang memilih format biner berikutnya berdasarkan nilai yang telah dibaca. Nilai format biner yang dihasilkan oleh fungsi ini bekerja secara bertahap:
- Format biner yang ditentukan oleh parameter
binaryFormat
digunakan untuk membaca nilai. - Nilai diteruskan ke fungsi pilihan yang ditentukan oleh parameter
chooseFunction
. - Fungsi pilihan memeriksa nilai dan mengembalikan format biner kedua.
- Format biner kedua digunakan untuk membaca nilai kedua.
- Jika fungsi gabungan ditentukan, maka nilai pertama dan kedua diteruskan ke fungsi gabungan, dan nilai yang dihasilkan dikembalikan.
- Jika fungsi gabungan tidak ditentukan, nilai kedua dikembalikan.
- Nilai kedua dikembalikan.
Parameter type
opsional menunjukkan jenis format biner yang akan dikembalikan oleh fungsi pilihan. Baik type any
, type list
, atau type binary
dapat ditentukan. Jika parameter type
tidak ditentukan, maka type any
digunakan. Jika type list
atau type binary
digunakan, maka sistem mungkin dapat mengembalikan nilai streaming binary
atau list
alih-alih yang di-buffer, yang dapat mengurangi jumlah memori yang diperlukan untuk membaca format.
Baca daftar byte di mana jumlah elemen ditentukan oleh byte pertama.
Penggunaan
let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.List(BinaryFormat.Byte, length)
)
in
listFormat(binaryData)
Output
{3,4}
Baca daftar byte di mana jumlah elemen ditentukan oleh byte pertama, dan simpan byte pertama yang dibaca.
Penggunaan
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}]
Baca daftar byte di mana jumlah elemen ditentukan oleh byte pertama menggunakan daftar streaming.
Penggunaan
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}