Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: Aplicações de tela
Constrói um tipo definido pelo utilizador para uso com funções definidas pelo utilizador e valores sem tipo.
Importante
- Estas funções são experimentais.
- As caraterísticas experimentais não se destinam à produção e poderão não estar completas. Estas caraterísticas estão disponíveis antes do lançamento oficial, para que possa ter acesso antecipado e enviar comentários. Mais informações: Compreender caraterísticas experimentais, de pré-visualização e retiradas em aplicações de tela
- Este comportamento só está disponível quando a caraterística experimental de Tipos definidas pelo utilizador em Definições > Próximas caraterísticas > Experimentais está ativada (está desativada por predefinição).
- Os seus comentários são importantes. Diga-nos o que pensa no fórum da comunidade de caraterísticas experimentais do Power Apps.
Descrição
Cada função no Power Fx define os tipos de valores que podem ser passados como parâmetros e o tipo de saída. Os tipos são verificados quando escreve uma fórmula e os erros são mostrados se não estiverem de acordo com o esperado. Os tipos também são usados pelo editor para sugerir boas opções para o que passar para a função e detetar erros o mais cedo possível.
Ao criar as suas próprias funções definidas pelo utilizador, precisa de especificar os tipos de entrada e de saída. Para tipos simples, como Decimal ou Text, isto é fácil, pois estes tipos básicos são predefinidos. Para tipos mais complexos, como registros ou tabelas, use a Type função para criar o tipo.
A Type função também torna os valores dinâmicos mais fáceis de trabalhar. Com as funções ParseJSON,IsType e AsType , um valor dinâmico pode ser convertido em um objeto tipado no qual as colunas não precisam mais ser digitadas individualmente no ponto de uso.
A Type função usa um TypeSpecification como seu único argumento. A especificação de tipo mais simples é referenciar um tipo existente, por exemplo Type( Text ). Uma especificação de tipo para um registo ou tabela é semelhante à definição de um registo ou tabela com valores literais, onde os valores são substituídos por nomes de tipo. Por exemplo, {Name: "Jane"} seria digitado com Type( {Name: Text} ). As tabelas são especificadas entre parênteses retos, não com a função Tabela e apenas um registo pode ser fornecido. Por exemplo, [1,2,3] seria digitado com Type( [Number] ).
Use a RecordOf função para extrair o tipo de registro de um tipo de tabela. Por exemplo, Type( RecordOf( Library ) ) devolveria o tipo de um único livro da biblioteca. Para criar um tipo de tabela a partir de um tipo de registo, encapsule o tipo de registo entre parênteses retos. Por exemplo, Type( [ Book ] ) define uma biblioteca.
RecordOf só pode ser usado dentro da Type função.
A Type função e o valor do tipo que ela retorna só podem ser usados em locais específicos no Power Fx, como o segundo argumento para ParseJSON. Em aplicativos Canvas, a Type função pode ser usada com uma fórmula nomeada em App.Formulas.
Sintaxe
RecordOf( Tipo de tabela )
- TableType — Obrigatório. O nome de tipo de uma tabela. Isto não aceita uma especificação de tipo, precisa de ser o nome de um tipo definido anteriormente para uma tabela.
Type( TypeSpecification )
- TypeSpecification — Obrigatório. Uma especificação de tipo.
Exemplos
Type Função
Considere as seguintes definições em 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 ] );
Observe como o texto do título real "A Study in Scarlet" é substituído pelo nome do tipo Text na especificação do tipo, um marcador de posição para qualquer valor de texto. Um parâmetro ou variável do tipo BookType pode conter um dos livros em Library, enquanto LibraryType pode conter a tabela inteira. Com estes tipos em vigor, podemos estabelecer estas funções definidas pelo utilizador:
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);
Também pode usar o BookType para analisar uma cadeia JSON que contém um livro:
ParseJSON( "{""Title"":""Gulliver's Travels"", ""Author"": ""Jonathan Swift"", ""Published"": 1900}", BookType
)
Usar BookType como segundo argumento para ParseJSON resulta num registo com tipo que pode ser usado como qualquer outro registo do Power Fx.
RecordOf Função
No exemplo de Type função, você começa com BookType e constrói LibraryType envolvendo uma tabela em torno dela. Poderíamos ter definido estes tipos de forma inversa com:
// 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 ) );