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}