Бележка
Достъпът до тази страница изисква удостоверяване. Можете да опитате да влезете или да промените директориите.
Достъпът до тази страница изисква удостоверяване. Можете да опитате да промените директориите.
Отнася се за: Приложения за платно
Конструира дефиниран от потребителя тип за използване с дефинирани от потребителя функции и нетипизирани стойности.
Description
Всяка функция в Power Fx определя типовете стойности, които могат да бъдат подадени като параметри и вида на изхода. Типовете се проверяват, когато пишете формула и се показват грешки, ако не са в съгласие с очакваното. Типовете също се използват от редактора, за да предложат добри опции за това какво да се предаде във функцията и да се открият грешки възможно най-рано.
Когато създавате свои собствени потребителски функции, трябва да посочите типовете вход и изход. За прости типове като десетичен или текст това е лесно, тъй като тези основни типове са предварително дефинирани. За по-сложни типове, като например записи или таблици, използвайте функцията Type , за да създадете типа.
Функцията Type също така улеснява работата с динамичните стойности. С функциите ParseJSON, IsType и AsType динамична стойност може да бъде преобразувана в въведен обект, в който колоните вече не е необходимо да бъдат въвеждани поотделно в точката на използване.
Функцията Type приема TypeSpecification като единствен аргумент. Най-простата спецификация на типа е да се посочи съществуващ тип, например Type( Text ). Спецификацията на типа за запис или таблица е подобна на дефинирането на запис или таблица с литерални стойности, където стойностите се заменят с имена на типове. Например, {Name: "Jane"} ще бъде въведен с Type( {Name: Text} ). Таблиците се задават с квадратни скоби, а не с функцията Таблица , и може да се предостави само един запис. Например, [1,2,3] ще бъде въведен с Type( [Number] ).
RecordOf Използвайте функцията, за да извлечете типа запис от тип таблица. Например, Type( RecordOf( Library ) ) ще върне типа на една книга от библиотеката. За да направите тип таблица от тип запис, обвийте типа на записа в квадратни скоби. Например, Type( [ Book ] ) дефинира библиотека.
RecordOf може да се използва само във Type функцията.
Функцията Type и стойността на типа, която връща, могат да се използват само на определени места в Power Fx, като например втория аргумент на ParseJSON. В приложенията Type Canvas функцията може да се използва с наименувана формула в App.Formulas.
Syntax
RecordOf( Тип таблица )
- TableType – Задължително. Името на типа на таблица. Това не приема спецификация на типа, трябва да е името на предварително дефиниран тип за таблица.
Type( TypeSpecification )
- ТипСпецификация – Задължително. Спецификация на типа.
Examples
Type функция
Помислете за следните дефиниции в 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 функция
В примера Type за функцията започвате с 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 ) );