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}