RecordOf ve Type işlevleri
Şunlar için geçerlidir: Tuval uygulamaları
Kullanıcı tanımlı işlevler ve türü belirtilmemiş değerlerle kullanılmak üzere kullanıcı tanımlı bir tür oluşturur.
Önemli
- Bu işlevler deneyseldir.
- Deneysel özellikler üretim amaçlı kullanıma yönelik değildir ve tamamlanmamış olabilir. Bu özellikler, önceden erişebilmeniz ve geri bildirim sağlamanız amacıyla resmi sürümden önce kullanıma sunulur. Daha fazla bilgi: Tuval uygulamasında deneysel, önizleme ve kullanımdan kaldırılan özellikleri anlama
- Bu davranış yalnızca Ayarlar > Yaklaşan özellikler > Deneysel'deki Kullanıcı tanımlı türler deneysel özelliği açık olduğunda kullanılabilir (varsayılan olarak kapalıdır).
- Geri bildiriminiz değerlidir. Düşüncelerinizi Power Apps deneysel özellik topluluk forumunda bize bildirin.
Description
Power Fx içindeki her fonksiyon, parametre olarak geçilebilecek değer türlerini ve çıktının türünü tanımlar. Bir formül yazarken türler kontrol edilir ve beklenenle uyuşmadıklarında hatalar gösterilir. Türler ayrıca editör tarafından işleve nelerin geçirileceği konusunda iyi seçenekler önermek ve hataları mümkün olduğunca erken tespit etmek için kullanılır.
Kendi kullanıcı tanımlı işlevlerinizi oluştururken, giriş ve çıkış türlerini belirtmeniz gerekir. Ondalık veya Metin gibi basit tipler için bu kolaydır çünkü bu temel tipler önceden tanımlanmıştır. Kayıtlar veya tablolar gibi daha karmaşık türler için, türü oluşturmak üzere Tür işlevini kullanın.
Tür fonksiyonu ayrıca türü olmayan nesnelerle çalışmayı da kolaylaştırır. ParseJSON, IsType ve AsType fonksiyonlarıyla, türü belirlenmeyen bir nesne, kullanım noktasında sütunların artık tek tek yazılmasına gerek kalmayan türü belirlenmiş bir nesneye dönüştürülebilir.
Tür fonksiyonu tek argümanı olarak bir TypeSpecification alır. En basit tip tanımlaması, var olan bir tipe, örneğin Type( Text )
'e referans vermektir. Bir kayıt veya tablo için tür belirtimi, değerlerin tür adlarıyla değiştirildiği değişmez değerlere sahip bir kayıt veya tablo tanımlamaya benzer. Örneğin {Name: "Jane"}
, Type( {Name: Text} )
ile yazılabilir. Tablolar köşeli parantezlerle belirtilir, Tablo işleviyle değil ve yalnızca bir kayıt sağlanabilir. Örneğin [1,2,3]
, Type( [Number] )
ile yazılabilir.
Bir tablo türünden kayıt türünü çıkarmak için RecordOf işlevini kullanın. Örneğin, Type( RecordOf( Library ) )
kütüphaneden tek bir kitabın türünü döndürür. Kayıt türünden tablo türü oluşturmak için, kayıt türünü köşeli parantez içine alın. Örneğin, Type( [ Book ] )
bir kütüphaneyi tanımlar.
RecordOf yalnızca Tür fonksiyonu içerisinde kullanılabilir.
Tür fonksiyonu ve döndürdüğü tip değeri yalnızca Power Fx içindeki belirli yerlerde, örneğin ParseJSON'un ikinci argümanında kullanılabilir. Canvas uygulamalarında, Tür işlevi App.Formulas'daki adlandırılmış bir formülle kullanılabilir.
Sözdizimi
RecordOf( TableType )
- TableType – Gerekli. Bir tablonun tür adı. Bu bir tür belirtimini kabul etmez, bir tablo için önceden tanımlanmış bir türün adı olması gerekir.
Tür( TypeSpecification )
- TypeSpecification – Gerekli. Bir tür belirtimi.
Örnekler
Tür işlevi
App.Formulas'taki aşağıdaki tanımları göz önünde bulundurun:
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 ] );
Tür belirtiminde gerçek başlık metni "A Study in Scarlet"
'in, herhangi bir metin değeri için bir yer tutucu olan tür adı Text
ile değiştirildiğine dikkat edin.
BookType
tipindeki bir parametre veya değişken Library
içindeki kitaplardan birini tutabilirken, LibraryType
tüm tabloyu tutabilir. Bu türler yerindeyken, bu kullanıcı tanımlı işlevleri tanımlayabiliriz:
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);
Ayrıca bir kitap içeren JSON dizesini ayrıştırmak için BookType
de kullanabilirsiniz:
ParseJSON( "{""Title"":""Gulliver's Travels"", ""Author"": ""Jonathan Swift"", ""Published"": 1900}", BookType
)
ParseJSON'un ikinci argümanı olarak BookType
kullanılması, diğer Power Fx kayıtları gibi kullanılabilen türlendirilmiş bir kayıtla sonuçlanır.
RecordOf işlevi
Tür fonksiyon örneğinde, BookType
ile başlayıp, etrafına bir tablo sararak LibraryType
'ü oluşturuyorsunuz. Bu türleri tersten şu şekilde tanımlayabilirdik:
// 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 ) );