Jaa


BinaryFormat.Choice

Syntaksi

BinaryFormat.Choice(binaryFormat as function, chooseFunction as function, optional type as nullable type, optional combineFunction as nullable function) as function

Tietoja

Palauttaa binaarimuodon, joka valitsee seuraavan binaarimuodon jo luetun arvon perusteella. Tämän funktion tuottama binaarimuotoarvo toimii vaiheittain:

  • -parametrin binaryFormat määrittämää binaarimuotoa käytetään arvon lukemiseen.
  • Arvo välitetään -parametrin määrittämälle valintafunktiolle chooseFunction .
  • Valintafunktio tutkii arvon ja palauttaa toisen binaarimuodon.
  • Toista binaarimuotoa käytetään toisen arvon lukemiseen.
  • Jos yhdistämisfunktio on määritetty, ensimmäiset ja toiset arvot välitetään yhdistämisfunktiolle, ja tulokseksi saatava arvo palautetaan.
  • Jos yhdistämisfunktiota ei ole määritetty, toinen arvo palautetaan.
  • Toinen arvo palautetaan.

Valinnainen type -parametri ilmaisee valintafunktion palauttaman binaarimuodon tyypin. Joko type any, type listtai type binary voidaan määrittää. Jos parametria type ei määritetä, type any käytetään kohdetta . Jos type list tai type binary on käytössä, järjestelmä saattaa pystyä palauttamaan puskuroitavan arvon tai list suoratoistoarvonbinary, mikä voi vähentää muodon lukemiseen tarvittavan muistin määrää.

Esimerkki 1

Lue tavuluettelo, jossa ensimmäinen tavu määrittää elementtien määrän.

Käyttö

let
    binaryData = #binary({2, 3, 4, 5}),
    listFormat = BinaryFormat.Choice(
        BinaryFormat.Byte,
        (length) => BinaryFormat.List(BinaryFormat.Byte, length)
    )
in
    listFormat(binaryData)

Tuloste

{3,4}

Esimerkki 2

Lue tavuluettelo, jossa ensimmäinen tavu määrittää elementtien määrän, ja säilytä ensimmäinen luettu tavu.

Käyttö

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)

Tuloste

[length = 2, list = {3, 4}]

Esimerkki 3

Lue tavuluettelo, jossa ensimmäinen tavu määrittää elementtien määrän käyttämällä virtautusluetteloa.

Käyttö

let
    binaryData = #binary({2, 3, 4, 5}),
    listFormat = BinaryFormat.Choice(
        BinaryFormat.Byte,
        (length) => BinaryFormat.List(BinaryFormat.Byte, length),
        type list
    )
in
    listFormat(binaryData)

Tuloste

{3, 4}