BinaryFormat.Choice
Mengembalikan format perduaan yang memilih format perduaan seterusnya berdasarkan pada nilai yang telah dibaca.
Syntax
BinaryFormat.Choice(
binaryFormat as function,
chooseFunction as function,
optional type as type,
optional combineFunction as function
) as function
Remarks
Mengembalikan format perduaan yang memilih format perduaan seterusnya berdasarkan pada nilai yang telah dibaca. Nilai format perduaan yang dihasilkan oleh fungsi ini berfungsi secara berperingkat:
- Format perduaan yang ditentukan oleh parameter
binaryFormatdigunakan untuk membaca nilai. - Nilai yang dihantar ke fungsi pilih ditentukan oleh parameter
chooseFunction. - Fungsi pilihan memeriksa nilai dan mengembalikan format perduaan kedua.
- Format perduaan kedua digunakan untuk membaca nilai kedua.
- Jika fungsi gabungan ditentukan, maka nilai pertama dan kedua dihantar kepada fungsi gabungan dan nilai yang terhasil dikembalikan.
- Jika fungsi gabungan tidak ditentukan, nilai kedua dikembalikan.
- Nilai kedua dikembalikan.
Parameter type pilihan menunjukkan jenis format perduaan yang akan dikembalikan oleh fungsi pilihan. Sama ada type any, type list atau type binary boleh ditentukan. Jika parameter type tidak ditentukan, maka type any digunakan. Jika type list atau type binary digunakan, maka sistem mungkin dapat mengembalikan nilai binary atau list penstriman berbanding nilai penimbalan, yang boleh mengurangkan amaun memori yang diperlukan untuk membaca format.
Examples
Example #1
Baca senarai bait yang mana bilangan elemen ditentukan oleh bait pertama.
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
Baca senarai bait yang mana bilangan elemen ditentukan oleh bait pertama dan kekalkan bacaan bait pertama.
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
Baca senarai bait yang mana bilangan elemen ditentukan oleh bait pertama menggunakan senarai penstriman.
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