Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Sintaksis
BinaryFormat.Choice(
binaryFormat as function,
chooseFunction as function,
optional type as nullable type,
optional combineFunction as nullable function
) as function
Tentang
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
binaryFormatdigunakan 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.
Contoh 1
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}
Contoh 2
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}]
Contoh 3
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}