Baca dalam bahasa Inggris

Bagikan melalui


BinaryFormat.Choice

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 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.

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}