RecordOfופונקציות Type

חל על: אפליקציות קנבס

בונה סוג שמוגדר על-ידי המשתמש לשימוש עם פונקציות המוגדרות על-ידי המשתמש וערכים לא מסווגים.

Description

כל פונקציה ב- Power Fx מגדירה את סוגי הערכים שניתן להעביר כפרמטרים ואת סוג הפלט. סוגים נבדקים בעת כתיבת נוסחה ושגיאות מוצגות אם הם אינם מסכימים עם הצפוי. סוגים משמשים גם את העורך כדי להציע אפשרויות טובות עבור מה להעביר לתוך הפונקציה ולזהות שגיאות מוקדם ככל האפשר.

בעת יצירת פונקציות המוגדרות על-ידי המשתמש, עליך לציין את סוגי הקלט והפלט. עבור סוגים פשוטים כגון עשרוני או טקסט, הדבר קל מכיוון שסוגים בסיסיים אלה מוגדרים מראש. עבור סוגים מורכבים יותר, כגון רשומות או טבלאות, השתמש בפונקציה 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.

Syntax

RecordOf( טבל טייס )

  • TableType - נדרש. שם הסוג של טבלה. פעולה זו אינה מקבלת מפרט סוג, זה צריך להיות שם של סוג שהוגדר קודם לכן עבור טבלה.

Type( סוג מפרט )

  • TypeSpecification - נדרש. מפרט של סוג.

Examples

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 Build 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 ) );