Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
Aplícase a: aplicacións Canvas
Constrúe un tipo definido polo usuario para o seu uso con funcións definidas polo usuario e valores non tipificados.
Importante
- Estas funcións son experimentais.
- As funcións experimentais non están destinadas ao uso de produción e poden non estar completas. Estas funcións están dispoñibles antes dun lanzamento oficial para que poidas acceder anticipadamente e proporcionar comentarios. Máis información: Comprender as funcións experimentais, de previsualización e retiradas en aplicacións en desuso
- Este comportamento só está dispoñible cando a función experimental Tipos definidos polo usuario en Configuración > Próximas funcións > a7>Experimental está activado (está desactivado por defecto).
- Os teus comentarios son valiosos. Fainos saber o que pensas no Power Apps foro da comunidade de funcións experimentais.
Descripción
Cada función de Power Fx define os tipos de valores que se poden pasar como parámetros e o tipo de saída. Os tipos compróbanse cando se escribe unha fórmula e móstranse os erros se non están de acordo co que se espera. Os tipos tamén son usados polo editor para suxerir boas opcións sobre o que pasar á función e detectar erros o antes posible.
Ao crear as súas propias funcións definidas polo usuario, cómpre especificar os tipos de entrada e saída. Para tipos sinxelos como Decimal ou Texto, isto é sinxelo xa que estes tipos básicos están predefinidos. Para tipos máis complexos, como rexistros ou táboas, use a Type función para crear o tipo.
A Type función tamén facilita o traballo con valores dinámicos. Coas funcións ParseJSON, IsType e AsType , un valor dinámico pode ser convertido nun obxecto tipado no que as columnas xa non necesitan ser escritas individualmente no punto de uso.
A Type función toma un TypeSpecification como único argumento. A especificación de tipo máis sinxela é facer referencia a un tipo existente, por exemplo Type( Text ). Unha especificación de tipo para un rexistro ou táboa é semellante á definición dun rexistro ou táboa con valores literais, onde os valores son substituídos por nomes de tipos. Por exemplo, {Name: "Jane"} escribiríase con Type( {Name: Text} ). As táboas especifícanse entre corchetes, non coa función Táboa , e só se pode proporcionar un rexistro. Por exemplo, [1,2,3] escribiríase con Type( [Number] ).
Use a RecordOf función para extraer o tipo de rexistro dun tipo de táboa. Por exemplo, Type( RecordOf( Library ) ) devolvería o tipo dun só libro da biblioteca. Para crear un tipo de táboa a partir dun tipo de rexistro, engada o tipo de rexistro entre corchetes. Por exemplo, Type( [ Book ] ) define unha biblioteca.
RecordOf Só se pode usar dentro da Type función.
A Type función e o valor de tipo que devolve só se poden usar en lugares específicos en Power Fx, como o segundo argumento de ParseJSON. Nas aplicacións de Canvas, a Type función pódese usar cunha fórmula nomeada en App.Formulas.
Sintaxe
RecordOf( TableType )
- TableType – Obrigatorio. O nome do tipo dunha táboa. Isto non acepta unha especificación de tipo, debe ser o nome dun tipo definido previamente para unha táboa.
Type( TypeSpecification )
- TypeSpecification – Obrigatorio. Unha especificación de tipo.
Exemplos
Type Función
Considere as seguintes definicións en 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" substitúese polo nome do tipo Text na especificación do tipo, un marcador de posición para calquera valor de texto. Un parámetro ou variable de tipo BookType pode albergar un dos libros de Library, mentres que LibraryType pode albergar toda a táboa. Con estes tipos instalados, podemos definir estas funcións definidas polo usuario:
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);
Tamén podes usar BookType para analizar unha cadea JSON que contén un libro:
ParseJSON( "{""Title"":""Gulliver's Travels"", ""Author"": ""Jonathan Swift"", ""Published"": 1900}", BookType
)
O uso de BookType como segundo argumento para ParseJSON dá como resultado un rexistro escrito que se pode usar como calquera outro Power Fx rexistro.
RecordOf Función
No exemplo da Type función, comeza e BookType constrúe LibraryType envolvendo unha táboa ao redor dela. Poderiamos ter definido estes tipos á inversa con:
// 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 ) );