통사론
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}