หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
วากยสัมพันธ์
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 อย่างใดอย่างหนึ่ง หากไม่ได้ระบุพารามิเตอร์ typetype 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}