Бөлісу құралы:


RecordOf және Type функциялары

Мыналарға қолданылады: Canvas қолданбалары

Пайдаланушы анықтаған функциялармен және типтелмеген мәндермен пайдалану үшін пайдаланушы анықталған түрін құрады.

Маңызды

Сипаттама

Power Fx ішіндегі әрбір функция параметр ретінде беруге болатын мән түрлерін және шығыс түрін анықтайды. Түрлер формуланы жазғанда тексеріледі және олар күтілетін нәрсеге сәйкес келмесе, қателер көрсетіледі. Түрлерді редактор функцияға не өту керек және қателерді мүмкіндігінше ертерек анықтау үшін жақсы опцияларды ұсыну үшін де пайдаланады.

Өзіңіздің пайдаланушы анықтайтын функцияларды жасаған кезде енгізу және шығару түрлерін көрсету қажет. Ондық немесе Мәтін сияқты қарапайым түрлер үшін бұл оңай, себебі бұл негізгі түрлер алдын ала анықталған. Жазбалар немесе кестелер сияқты күрделі түрлер үшін түрін жасау үшін Түр функциясын пайдаланыңыз.

Түр функциясы сонымен қатар типтелмеген нысандармен жұмыс істеуді жеңілдетеді. ParseJSON, IsType және AsType функциялары бар, типтелмеген нысанды пайдалану нүктесінде бағандарды жеке теруді қажет етпейтін терілген нысанға түрлендіруге болады.

Түр функциясы тек аргумент ретінде Түр сипаттамасы ді қабылдайды. Ең қарапайым түр спецификациясы бар түрге сілтеме жасау болып табылады, мысалы Type( Text ). Жазба немесе кесте үшін тип спецификациясы мәндер түр атауларымен ауыстырылатын әріптік мәндері бар жазбаны немесе кестені анықтауға ұқсас. Мысалы, {Name: "Jane"}Type( {Name: Text} ) арқылы теріледі. Кестелер Кесте функциясы емес, шаршы жақшалармен көрсетілген және тек бір жазбаны қамтамасыз етуге болады. Мысалы, [1,2,3]Type( [Number] ) арқылы теріледі.

Жазба түрін кесте түрінен шығару үшін RecordOf функциясын пайдаланыңыз. Мысалы, Type( RecordOf( Library ) ) кітапханадан бір кітаптың түрін қайтарады. Жазба түрінен кесте түрін жасау үшін жазба түрін төртбұрышты жақшаға ораңыз. Мысалы, Type( [ Book ] ) кітапхананы анықтайды. RecordOf тек Түрі функциясында ғана пайдалануға болады.

Түр функциясы және ол қайтаратын түр мәні Power Fx ішіндегі белгілі орындарда ғана пайдаланылуы мүмкін, мысалы ParseJSON. Canvas қолданбаларында Түр функциясын App.Formulas ішіндегі аталған формуламен пайдалануға болады.

Синтаксис

Жазба( Кесте түрі )

  • TableType – Міндетті. Кесте түрінің атауы. Бұл түр спецификациясын қабылдамайды, ол кесте үшін бұрын анықталған түрдің атауы болуы керек.

Түр( Түр сипаттамасы )

  • Түр ерекшелігі – Міндетті. Түр спецификациясы.

Мысалдар

Түр функциясы

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 функциясы

Түрі функция мысалында сіз 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 ) );