Нотатка
Доступ до цієї сторінки потребує авторизації. Можна спробувати ввійти або змінити каталоги.
Доступ до цієї сторінки потребує авторизації. Можна спробувати змінити каталоги.
Застосовується до: додатків Canvas
Створює визначений користувачем тип для використання з функціями, визначеними користувачем, і нетипізованими значеннями.
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 )
- TableType – обов’язковий. Ім’я типу таблиці. Це не приймає специфікацію типу, це має бути ім’я раніше визначеного типу для таблиці.
Type( ТипСпецифікація )
- Специфікація типу– обов’язковий. Специфікація типу.
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 ) );