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

BinaryFormat.Group

आइटम्स के समूह को पढ़ने वाले बाइनरी स्वरूप को लौटाता है.

Syntax

BinaryFormat.Group(
binaryFormat as function,
group as list,
optional extra as function,
optional lastKey as any
) as function

Remarks

पैरामीटर्स निम्न प्रकार हैं.

  • binaryFormat पैरामीटर कुंजी मान के बाइनरी स्वरूप को निर्दिष्ट करता है.
  • group पैरामीटर ज्ञात आइटम्स के समूह के बारे में जानकारी प्रदान करता है.
  • वैकल्पिक extra पैरामीटर का उपयोग ऐसा फ़ंक्शन को निर्दिष्ट करने के लिए किया जा सकता है जो किसी अनपेक्षित कुंजी का अनुसरण करने वाले मान के लिए एक बाइनरी स्वरूप मान लौटाएगा. यदि extra पैरामीटर निर्दिष्ट नहीं है, तो अनपेक्षित कुंजी मान होने पर एक त्रुटि दी जाएगी.
group पैरामीटर आइटम परिभाषाओं की एक सूची निर्दिष्ट करता है. प्रत्येक आइटम परिभाषा एक सूची होती है, जिसमें 3-5 मान होते हैं, जो निम्न प्रकार हैं:
  • कुंजी मान. कुंजी का मान जो आइटम से संबंधित है. यह आइटम्स के सेट के अंतर्गत अद्वितीय होना चाहिए.
  • आइटम स्वरूप. आइटम के मान से संबंधित बाइनरी स्वरूप. यह प्रत्येक आइटम को भिन्न स्वरूप में होने की अनुमति देता है.
  • आइटम आवृत्ति. आइटम का समूह में कितनी बार प्रकट होना अपेक्षित है उसका BinaryOccurrence.Type मान. अपेक्षित आइटम्स जो मौजूद नहीं हैं वे त्रुटि पहुँचाते हैं. अपेक्षित या वैकल्पिक डुप्लिकेट आइटम्स को अनपेक्षित कुंजी मानों के समान हैंडल किया जाता है.
  • डिफ़ॉल्ट आइटम मान (वैकल्पिक). यदि डिफ़ॉल्ट आइटम, मान आइटम परिभाषा सूची में प्रकट होता है और नल नहीं होता है, तो डिफ़ॉल्ट के बजाए उसका उपयोग किया जाएगा. दोहराए जाने वाले या वैकल्पिक आइटम्स के लिए डिफ़ॉल्ट नल है और दोहराए जाने वाले मानों के लिए डिफ़ॉल्ट एक रिक्त सूची { } है.
  • आइटम मान ट्रांसफ़ॉर्म (वैकल्पिक). यदि आइटम परिभाषा सूची में आइटम मान ट्रांसफ़ॉर्म फ़ंक्शन मौजूद होता है और नल नहीं होता है, तो इससे पहले कि उसे लौटाया जाए उसे आइटम मान को ट्रांसफ़ॉर्म करने के लिए कॉल किया जाएगा. ट्रांसफ़ॉर्म फ़ंक्शन को आइटम के इनपुट में प्रकट होने पर ही कॉल किया जाता है (उसे डिफ़ॉल्ट मान के साथ कभी भी कॉल नहीं किया जाएगा).

Examples

Example #1

निम्न एकल बाइट का एक कुंजी मान ले लेता है, जिसमें समूह में 4 अपेक्षित आइटम्स होते हैं, जिनमें सभी में कुंजी के बाद एक बाइट का डेटा होता है. इनपुट में आइटम्स निम्न प्रकार प्रकट होते हैं:<ul><li>कुंजी 1 अपेक्षित होती है और मान 11 के साथ प्रकट नहीं होती.</li><li>कुंजी 2 दोहराई जाती है और मान 22 के साथ दो बार प्रकट होती है और परिणामस्वरूप { 22, 22 } का मान देती है.</li><li>कुंजी 3 वैकल्पिक होती है और प्रकट नहीं होती और परिणामस्वरूप नल मान देती है.</li><li>कुंजी 4 दोहराई जाती है लेकिन प्रकट नहीं होती और परिणामस्वरूप { } का मान देती है.</li><li>कुंजी 5 समूह का भाग नहीं होती लेकिन मान 55 के साथ एक बार प्रकट होती है. अतिरिक्त फ़ंक्शन, कुंजी मान 5 के साथ कॉल किया जाता है और उस मान से संबंधित स्वरूप को लौटाता है (BinaryFormat.Byte). मान 55 को पढ़ा गया और त्याग दिया गया.</li></ul>

let
b = #binary({
1, 11,
2, 22,
2, 22,
5, 55,
1, 11
}),
f = BinaryFormat.Group(
BinaryFormat.Byte,
{
{1, BinaryFormat.Byte, BinaryOccurrence.Required},
{2, BinaryFormat.Byte, BinaryOccurrence.Repeating},
{3, BinaryFormat.Byte, BinaryOccurrence.Optional},
{4, BinaryFormat.Byte, BinaryOccurrence.Repeating}
},
(extra) => BinaryFormat.Byte
)
in
f(b)

Result:

{11, {22, 22}, null, {}}

Example #2

निम्न उदाहरण, आइटम मान ट्रांसफ़ॉर्म और डिफ़ॉल्‍ट आइटम मान की व्याख्या करता है. कुंजी 1 के साथ दोहराया जाने वाला आइटम मानों की सूची के योग को List.Sum का उपयोग करके पढ़ता है. कुंजी 2 के साथ वैकल्पिक आइटम में नल के बजाए 123 का एक डिफ़ॉल्‍ट मान है.

let
b = #binary({
1, 101,
1, 102
}),
f = BinaryFormat.Group(
BinaryFormat.Byte,
{
{1, BinaryFormat.Byte, BinaryOccurrence.Repeating,
0, (list) => List.Sum(list)},
{2, BinaryFormat.Byte, BinaryOccurrence.Optional, 123}
}
)
in
f(b)

Result:

{203, 123}

Category

Binary Formats.Reading a group of items