Aracılığıyla paylaş


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

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 için işlevini kullanın Type .

İşlev ayrıca Type dinamik değerlerin daha kolay çalışmasını sağlar. ParseJSON, IsType ve AsType işlevleriyle dinamik bir değer, artık kullanım noktasında sütunların tek tek yazılması gerekmeyen bir türlenmiş nesneye dönüştürülebilir.

işlevi tek Type bağımsız değişkeni olarak 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 RecordOf kayıt türünü ayıklamak için 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 işlevi içinde Type kullanılabilir.

Type İşlev ve döndürdüğü tür değeri yalnızca Power Fx'te ParseJSON'a ikinci bağımsız değişken gibi belirli yerlerde kullanılabilir. Tuval uygulamalarında, Type işlev App.Formulas'ta 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.

Type( TypeSpecification )

  • TypeSpecification – Gerekli. Bir tür belirtimi.

Örnekler

Type fonksiyon

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
)

BookType'un ikinci argümanı olarak kullanılması, diğer Power Fx kayıtları gibi kullanılabilen türlendirilmiş bir kayıtla sonuçlanır.

RecordOf fonksiyon

İşlev örneğinde Type , ile BookType başlar ve etrafında bir tablo kaydırarak oluşturursunuz LibraryType . 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 ) );