Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Синтаксис
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}