مشاركة عبر


RecordOfودالات Type

تنطبق على: تطبيقات اللوحة

إنشاء نوع محدد من قِبل المستخدم للاستخدام مع الدالات المحددة من قِبل المستخدم والقيم غير المصنفة.

مهم

الوصف

تحدد كل دالة في Power Fx أنواع القيم التي يمكن تمريرها كمعلمات ونوع الإخراج. ويتم التحقق من الأنواع عند كتابة صيغة وتظهر الأخطاء إذا كانت لا تتفق مع ما هو متوقع. ويتم استخدام الأنواع أيضًا بواسطة المحرر لاقتراح خيارات جيدة لما يجب تمريره إلى الوظيفة واكتشاف الأخطاء في أقرب وقت ممكن.

وعند إنشاء الوظائف المحددة من قبل المستخدم، تحتاج إلى تحديد أنواع الإدخال والإخراج. وبالنسبة للأنواع البسيطة مثل Decimal أو Text، يكون هذا سهلاً لأن هذه الأنواع الأساسية محددة مسبقًا. بالنسبة لأنواع أكثر تعقيدا، مثل السجلات أو الجداول، استخدم الدالة Type لإنشاء النوع.

تعمل الدالة Type أيضا على تسهيل استخدام القيم الديناميكية. باستخدام الدالات ParseJSON و IsType و AsType ، يمكن تحويل القيمة الديناميكية إلى كائن مكتوب حيث لم تعد الأعمدة بحاجة إلى الكتابة بشكل فردي عند نقطة الاستخدام.

Type تأخذ الدالة TypeSpecification كوسيطتها الوحيدة. وأبسط مواصفات النوع هي الإشارة إلى نوع موجود، على سبيل المثال Type( Text ). يشبه تحديد النوع لسجل أو جدول تعريف سجل أو جدول بقيم حرفية، حيث يتم استبدال القيم بأسماء الأنواع. على سبيل المثال، ستتم كتابة {Name: "Jane"} باستخدام Type( {Name: Text} ). ويتم تحديد الجداول بأقواس مربعة، وليس الدالة Table، ويمكن توفير سجل واحد فقط. على سبيل المثال، ستتم كتابة [1,2,3] باستخدام Type( [Number] ).

استخدم الدالة RecordOf لاستخراج نوع السجل من نوع جدول. على سبيل المثال، سيقوم Type( RecordOf( Library ) ) بإرجاع نوع كتاب واحد من المكتبة. ولإنشاء نوع جدول من نوع سجل، قم بلف نوع السجل بين قوسين مربعين. على سبيل المثال، يحدد Type( [ Book ] ) مكتبة. RecordOf يمكن استخدام فقط داخل الدالة Type .

Type يمكن استخدام الدالة وقيمة النوع التي ترجعها فقط في أماكن معينة في Power Fx، مثل الوسيطة الثانية ل ParseJSON. في تطبيقات Canvas، يمكن استخدام الدالة Type مع صيغة مسماة في App.Formulas.

بناء الجملة

RecordOf( TableType )

  • TableType – مطلوب. نوع اسم الجدول. ولا يقبل هذا تحديد النوع، بل يجب أن يكون اسم نوع محدد مسبقًا لجدول.

Type( TypeSpecification )

  • TypeSpecification – مطلوب. وصف نوع.

الأمثلة

Type دالة

فكر في التعريفات التالية في App.Formulas:

Library = 
  [ { Title: "A Study in Scarlet", Author: "Sir Arthur Conan Doyle", Published: 1887 }, 
    { Title: "And Then There Were None", Author: "Agatha Christie", Published: 1939 },
    { Title: "The Marvelous Land of Oz", Author: "L. Frank Baum", Published: 1904 } ];

// Type definition for a single book
BookType := Type( { Title: Text, Author: Text, Published: Number } );

// Type definition for a table of books
LibraryType := Type( [ BookType ] );

لاحظ كيف يتم استبدال نص العنوان الفعلي "A Study in Scarlet" باسم النوع Text في مواصفات النوع، وهو عنصر نائب لأي قيمة نصية. ويمكن لمعلمة أو متغير من النوع BookType الاحتفاظ بأحد الكتب في Library، بينما يمكن لـ LibraryType الاحتفاظ بالجدول بأكمله. ومع وجود هذه الأنواع في مكانها الصحيح، يمكننا تحديد هذه الدالات المحددة من قِبل المستخدم:

SortedBooks( books: LibraryType ): LibraryType = 
    SortByColumns( Library, Author, SortOrder.Ascending, Title, SortOrder.Ascending );

PublishedInLeapYear( book: BookType ): Boolean = 
    Mod( book.Published, 4 ) = 0 And 
    (Mod( book.Published, 100 ) <> 0 Or Mod( book.Published, 400 ) = 0);

يمكنك أيضًا استخدام BookType لتحليل سلسلة JSON التي تحتوي على كتاب:

ParseJSON( "{""Title"":""Gulliver's Travels"", ""Author"": ""Jonathan Swift"", ""Published"": 1900}", BookType
)

ويؤدي استخدام BookType باعتبارها الوسيطة الثانية لـ ParseJSON إلى ظهور سجل مصنف يمكن استخدامه مثل أي سجل Power Fx آخر.

RecordOf دالة

في مثال الدالة Type ، يمكنك البدء بالبناء BookType والتفاف LibraryType جدول حوله. كان بإمكاننا تحديد هذه الأنواع بالعكس باستخدام:

// Type definition for a table of books
RecordOfLibraryType := Type( [ { Title: Text, Author: Text, Published: Number } ] );

// Type definition for a single book
RecordOfBookType := Type( RecordOf( RecordOfLibraryType ) );