Kongsi melalui


RecordOf Type dan fungsi

Digunakan untuk: Apl kanvas

Membina jenis yang ditakrifkan pengguna untuk digunakan dengan fungsi yang ditakrifkan pengguna dan nilai yang tidak ditaip.

Penting

Description

Setiap fungsi dalam Power Fx mentakrifkan jenis nilai yang boleh dihantar sebagai parameter dan jenis output. Jenis diperiksa apabila anda menulis formula dan ralat ditunjukkan jika ia tidak bersetuju dengan apa yang dijangkakan. Jenis juga digunakan oleh editor untuk mencadangkan pilihan yang baik untuk perkara yang perlu dimasukkan ke dalam fungsi dan mengesan ralat seawal mungkin.

Apabila mencipta fungsi yang ditentukan pengguna anda sendiri, anda perlu menentukan jenis input dan output. Untuk jenis mudah seperti Perpuluhan atau Teks, ini mudah kerana jenis asas ini telah ditetapkan terlebih dahulu. Untuk jenis yang lebih kompleks, seperti rekod atau jadual, gunakan fungsi untuk Type mencipta jenis.

Fungsi ini Type juga menjadikan nilai dinamik lebih mudah digunakan. Dengan fungsi ParseJSON, IsType dan AsType , nilai dinamik boleh ditukar kepada objek yang ditaip di mana lajur tidak lagi perlu ditaip secara individu pada titik penggunaan.

Fungsi ini Type mengambil TypeSpecification sebagai satu-satunya hujahnya. Spesifikasi jenis yang paling mudah ialah merujuk jenis sedia ada, sebagai contoh Type( Text ). Spesifikasi jenis untuk rekod atau jadual adalah serupa dengan mentakrifkan rekod atau jadual dengan nilai literal, di mana nilai digantikan dengan nama jenis. Sebagai contoh, {Name: "Jane"} akan ditaip dengan Type( {Name: Text} ). Jadual ditentukan dengan kurungan persegi, bukan fungsi Jadual , dan hanya satu rekod boleh disediakan. Sebagai contoh, [1,2,3] akan ditaip dengan Type( [Number] ).

Gunakan RecordOf fungsi untuk mengekstrak jenis rekod daripada jenis jadual. Sebagai contoh, Type( RecordOf( Library ) ) akan mengembalikan jenis buku tunggal dari perpustakaan. Untuk membuat jenis jadual daripada jenis rekod, Balut jenis rekod dalam kurungan persegi. Sebagai contoh, Type( [ Book ] ) mentakrifkan perpustakaan. RecordOf hanya boleh digunakan dalam Type fungsi.

Fungsi Type dan nilai jenis yang dikembalikannya hanya boleh digunakan di tempat tertentu dalam Power Fx, seperti hujah kedua kepada ParseJSON. Dalam aplikasi Kanvas, fungsi boleh Type digunakan dengan formula bernama dalam App.Formulas.

Sintaks

RecordOf( Jenis Jadual )

  • TableType – Diperlukan. Nama jenis jadual. Ini tidak menerima spesifikasi jenis, ia perlu menjadi nama jenis yang ditakrifkan sebelum ini untuk jadual.

Type( Jenis Spesifikasi )

  • Spesifikasi Jenis – Diperlukan. Spesifikasi jenis.

Contoh

Type Fungsi

Pertimbangkan takrifan berikut dalam 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 ] );

Perhatikan bagaimana teks "A Study in Scarlet" tajuk sebenar digantikan dengan nama Text jenis dalam spesifikasi jenis, ruang letak untuk sebarang nilai teks. Parameter atau pembolehubah jenis BookType boleh menyimpan salah satu buku Library, manakala LibraryType boleh memuatkan keseluruhan jadual. Dengan jenis ini, kita boleh mentakrifkan fungsi yang ditentukan pengguna ini:

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

Anda juga boleh menggunakan untuk BookType menghuraikan rentetan JSON yang mengandungi buku:

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

Menggunakan BookType sebagai hujah kedua kepada ParseJSON menghasilkan rekod yang ditaip yang boleh digunakan seperti mana-mana rekod lain Power Fx .

RecordOf Fungsi

Dalam Type contoh fungsi, anda mulakan dengan BookType dan bina LibraryType dengan membungkus jadual di sekelilingnya. Kita boleh mentakrifkan jenis ini secara terbalik dengan:

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