Bagikan melalui


Fungsi RecordOf dan Type

Berlaku untuk: Aplikasi kanvas

Menyusun jenis yang ditentukan pengguna untuk digunakan dengan fungsi yang ditentukan pengguna dan nilai yang tidak diketik.

Penting

Description

Setiap fungsi dalam Power Fx mendefinisikan jenis nilai yang dapat diteruskan sebagai parameter dan jenis output. Jenis diperiksa saat Anda menulis rumus dan kesalahan ditampilkan jika tidak sesuai dengan apa yang diharapkan. Jenis juga digunakan oleh editor untuk menyarankan opsi yang baik untuk apa yang harus dimasukkan ke dalam fungsi dan mendeteksi kesalahan sedini mungkin.

Saat membuat fungsi yang ditentukan pengguna sendiri, Anda perlu menentukan jenis input dan output. Untuk tipe sederhana seperti Desimal atau Teks, ini mudah karena tipe dasar ini telah ditentukan sebelumnya. Untuk jenis yang lebih kompleks, seperti rekaman atau tabel, gunakan fungsi Jenis untuk membuat jenis.

Fungsi Type juga membuat objek yang tidak diketik lebih mudah untuk dikerjakan. Dengan fungsi ParseJSON, IsType, dan AsType , objek yang tidak diketik dapat dikonversi menjadi objek yang diketik di mana kolom tidak perlu lagi diketik secara individual pada titik penggunaan.

Fungsi Type mengambil TypeSpecification karena hanya argumen. Spesifikasi tipe yang paling sederhana adalah mereferensikan tipe yang ada, misalnya Type( Text ). Spesifikasi jenis untuk rekaman atau tabel mirip dengan mendefinisikan rekaman atau tabel dengan nilai literal, di mana nilai diganti dengan nama jenis. Misalnya,akan {Name: "Jane"} diketik dengan Type( {Name: Text} ). Tabel ditentukan dengan tanda kurung siku, bukan fungsi Tabel , dan hanya satu rekaman yang dapat disediakan. Misalnya,akan [1,2,3] diketik dengan Type( [Number] ).

Gunakan fungsi RecordOf untuk mengekstrak jenis rekaman dari jenis tabel. Misalnya, Type( RecordOf( Library ) ) akan mengembalikan jenis buku tunggal dari perpustakaan. Untuk membuat jenis tabel dari jenis rekaman, bungkus jenis rekaman dalam tanda kurung siku. Misalnya, Type( [ Book ] ) mendefinisikan pustaka. RecordOf hanya dapat digunakan dalam fungsi Type .

Fungsi Type dan nilai jenis yang dikembalikannya hanya dapat digunakan di tempat Power Fx tertentu, seperti argumen kedua untuk ParseJSON. Di aplikasi Kanvas, fungsi Jenis dapat digunakan dengan rumus bernama di App.Formulas.

Sintaks

RecordOf(Jenis Tabel )

  • TableType – Wajib. Nama jenis tabel. Ini tidak menerima spesifikasi jenis, itu harus menjadi nama jenis yang ditentukan sebelumnya untuk tabel.

Jenis( Spesifikasi Jenis )

  • TypeSpecification – Diperlukan. Spesifikasi tipe.

Contoh

Fungsi jenis

Pertimbangkan definisi 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" judul yang sebenarnya diganti dengan nama Text jenis dalam spesifikasi jenis, tempat penampung untuk nilai teks apa pun. Parameter atau variabel jenis BookType dapat menampung salah satu buku Library, sementara LibraryType dapat menampung seluruh tabel. Dengan jenis-jenis ini, kita dapat mendefinisikan 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 dapat menggunakan untuk BookType mengurai string JSON yang berisi buku:

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

Menggunakan BookType sebagai argumen kedua untuk ParseJSON menghasilkan rekaman yang diketik yang dapat digunakan seperti rekaman lainnya Power Fx .

Fungsi RecordOf

Dalam contoh fungsi Type , Anda mulai dengan BookType dan membangun LibraryType dengan membungkus tabel di sekitarnya. Kita bisa mendefinisikan jenis-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 ) );