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}