मुख्य कंटेंट तक स्किप करें

BinaryFormat.Choice

ऐसे बाइनरी स्वरूप को लौटाता है जो पहले ही पढ़े गए मान के आधार पर अगले बाइनरी स्वरूप का चयन करता है.

Syntax

BinaryFormat.Choice(
binaryFormat as function,
chooseFunction as function,
optional type as type,
optional combineFunction as function
) as function

Remarks

ऐसे बाइनरी स्वरूप को लौटाता है जो पहले ही पढ़े गए मान के आधार पर अगले बाइनरी स्वरूप का चयन करता है. इस फ़ंक्शन द्वारा उत्पन्न बाइनरी मान इन अवस्थाओं में काम करता है:

  • binaryFormat पैरामीटर द्वारा निर्दिष्ट किए गए बाइनरी स्वरूप का उपयोग मान को पढ़ने के लिए किया जाता है.
  • chooseFunction पैरामीटर द्वारा निर्दिष्ट किए गए चॉइस फ़ंक्शन में मान को पास किया जाता है.
  • चॉइस फ़ंक्शन मान का निरीक्षण करता है और एक द्वितीय बाइनरी स्वरूप लौटाता है.
  • द्वितीय बाइनरी स्वरूप का उपयोग द्वितीय मान को पढ़ने के लिए किया जाता है.
  • यदि संयोजन फ़ंक्शन निर्दिष्ट किया गया होता है, तो पहले और दूसरे मानों को संयोजन फ़ंक्शन में पास किया जाता है और परिणामित मान को लौटाया जाता है.
  • यदि संयोजन फ़क्शंन निर्दिष्ट नहीं किया गया होता है, तो द्वितीय मान को लौटाया जाता है.
  • द्वितीय मान को लौटाया गया.
वैकल्पिक type पैरामीटर उस बाइनरी स्वरूप को इंगित करता है जो चॉइस फ़ंक्शन द्वारा लौटाया जाएगा. या तो type any, type list या type binary निर्दिष्ट किए जा सकता हैं. यदि type पैरामीटर निर्दिष्ट नहीं किया गया होता है, तो type any उपयोग किया जाता है. यदि type list या type binary का उपयोग किया गया होता है, तो सिस्टम बफ़र्ड के बजाए एक स्ट्रीमिंग binary या list मान को लौटा सकता है, जो स्वरूप को पढ़ने के लिए आवश्यक स्मृति की मात्रा को कम कर सकता है.

Examples

Example #1

बाइट्स की सूची पढ़ें, जहाँ तत्वों की संख्या पहली बाइट से निर्धारित होती है.

let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.List(BinaryFormat.Byte, length)
)
in
listFormat(binaryData)

Result:

{3, 4}

Example #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)

Result:

[length = 2, list = {3, 4}]

Example #3

बाइट्स की सूची पढ़ें, जहाँ तत्वों की संख्या स्ट्रीमिंग सूची का उपयोग करके पहली बाइट से निर्धारित होती है.

let
binaryData = #binary({2, 3, 4, 5}),
listFormat = BinaryFormat.Choice(
BinaryFormat.Byte,
(length) => BinaryFormat.List(BinaryFormat.Byte, length),
type list
)
in
listFormat(binaryData)

Result:

{3, 4}

Category

Binary Formats.Controlling what comes next