แชร์ผ่าน


BinaryFormat.Choice

ไวยากรณ์

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

เกี่ยวกับ

ส่งกลับรูปแบบไบนารีที่เลือกรูปแบบไบนารีถัดไปโดยยึดตามค่าที่ถูกอ่านแล้ว ค่ารูปแบบไบนารีที่สร้างขึ้นโดยฟังก์ชันนี้ทํางานเป็นขั้นตอน:

  • รูปแบบไบนารีที่ระบุโดย binaryFormat พารามิเตอร์ ถูกใช้เพื่ออ่านค่า
  • ค่าถูกส่งผ่านไปยังฟังก์ชันตัวเลือกที่ระบุโดย chooseFunction พารามิเตอร์
  • ฟังก์ชันตัวเลือกตรวจสอบค่าและส่งกลับรูปแบบไบนารีที่สอง
  • รูปแบบไบนารีที่สองถูกใช้เพื่ออ่านค่าที่สอง
  • ถ้ามีการระบุฟังก์ชันการรวม แล้วค่าแรกและค่าที่สองจะถูกส่งผ่านไปยังฟังก์ชันการรวม และจะแสดงค่าที่เป็นผลลัพธ์
  • ถ้าไม่ได้ระบุฟังก์ชันการรวม จะส่งกลับค่าที่สอง
  • จะส่งกลับค่าที่สอง

พารามิเตอร์ ที่เลือกได้ type ระบุชนิดของรูปแบบไบนารีที่ฟังก์ชันตัวเลือกส่งคืน type anyอาจมีการระบุ , type listหรือtype binary typeหากไม่ได้ระบุพารามิเตอร์ แล้ว type any จะถูกนํามาใช้ ถ้า type list ใช้ หรือ type binary ระบบอาจสามารถส่งกลับค่าการ binary สตรีมหรือ list แทนที่อันที่ถูกบัฟเฟอร์ ซึ่งอาจลดจํานวนหน่วยความจําที่จําเป็นในการอ่านรูปแบบ

ตัวอย่างที่ 1

อ่านรายการของไบต์ที่กําหนดจํานวนขององค์ประกอบโดยไบต์แรก

การใช้งาน

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

เอาท์พุท

{3,4}

ตัวอย่าง 2

อ่านรายการของไบต์ที่กําหนดจํานวนขององค์ประกอบโดยไบต์แรก และรักษาไบต์แรกที่อ่านไว้

การใช้งาน

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)

เอาท์พุท

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

ตัวอย่างที่ 3

อ่านรายการของไบต์ที่กําหนดจํานวนขององค์ประกอบโดยไบต์แรกโดยใช้รายการสตรีมมิ่ง

การใช้งาน

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

เอาท์พุท

{3, 4}