Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: App canvas
Costruisce un tipo definito dall'utente da utilizzare con funzioni definite dall'utente e valori non tipizzati.
Importante
- Queste funzioni sono sperimentali.
- Le funzionalità sperimentali non sono destinate ad essere utilizzate e potrebbero non essere complete. Queste funzionalità sono disponibili prima di una versione ufficiale in modo che sia possibile ottenere l'accesso iniziale e inviare commenti. Ulteriori informazioni: Comprendere le funzionalità sperimentali, di anteprima e ritirate nelle app canvas
- Questo comportamento descritto in questo articolo è disponibile solo quando la funzionalità sperimentale Tipi definiti dall'utente in Impostazioni > Funzionalità in arrivo > Sperimentale è attivata (per impostazione predefinita è disattivata).
- I tuoi commenti sono importanti. Invia i tuoi commenti e suggerimenti nel forum della community delle funzionalità sperimentali di Power Apps.
Descrzione
Ogni funzione in Power Fx definisce i tipi di valori che possono essere passati come parametri e il tipo di output. I tipi vengono controllati quando si scrive una formula e vengono visualizzati gli errori se non sono conformi a quanto previsto. I tipi vengono utilizzati dall'editor anche per suggerire opzioni valide su cosa passare alla funzione e rilevare gli errori il prima possibile.
Quando si creano funzioni personalizzate definite dall'utente, è necessario specificare i tipi di input e output. Per i tipi semplici come Decimal o Text, questa operazione è semplice in quanto questi tipi di base sono predefiniti. Per tipi più complessi, ad esempio record o tabelle, usare la Type funzione per creare il tipo.
La Type funzione semplifica anche l'uso dei valori dinamici. Con le funzioni ParseJSON, IsType e AsType , un valore dinamico può essere convertito in un oggetto tipizzato in cui le colonne non devono più essere tipizzate singolarmente al momento dell'utilizzo.
La Type funzione accetta un typeSpecification come unico argomento. La specifica di tipo più semplice consiste nel fare riferimento, ad esempio Type( Text ), a un tipo esistente. Una specifica di tipo per un record o una tabella è simile alla definizione di un record o di una tabella con valori letterali, in cui i valori vengono sostituiti da nomi di tipo. Ad esempio, {Name: "Jane"} verrebbe digitato con Type( {Name: Text} ). Le tabelle vengono specificate con parentesi quadre, non con la funzione Table, ed è possibile specificare un solo record. Ad esempio, [1,2,3] verrebbe digitato con Type( [Number] ).
Usare la RecordOf funzione per estrarre il tipo di record da un tipo di tabella. Ad esempio, Type( RecordOf( Library ) ) restituirebbe il tipo di un singolo libro dalla raccolta. Per creare un tipo di tabella da un tipo di record, racchiudi il tipo di record tra parentesi quadre. Ad esempio, Type( [ Book ] ) definisce una raccolta.
RecordOf può essere usato solo all'interno della Type funzione.
La Type funzione e il valore del tipo restituito possono essere usati solo in posizioni specifiche in Power Fx, ad esempio il secondo argomento di ParseJSON. Nelle app Canvas la Type funzione può essere usata con una formula denominata in App.Formulas.
Sintassi
RecordOf( TableType )
- TableType: obbligatorio. Il nome tipo di una tabella. Non accetta una specifica di tipo, deve essere il nome di un tipo definito in precedenza per una tabella.
Type( TypeSpecification )
- TypeSpecification: obbligatorio. Una specifica di tipo.
Esempi
Funzione Type
Considera le seguenti definizioni in 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 ] );
Nota come il testo "A Study in Scarlet" del titolo effettivo viene sostituito con il nome Text del tipo nella specifica del tipo, un segnaposto per qualsiasi valore di testo. Un parametro o una variabile di tipo BookType può contenere uno dei libri Library, mentre LibraryType può contenere l'intera tabella. Con questi tipi, possiamo definire queste funzioni definite dall'utente:
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);
Puoi anche usare BookType per analizzare una stringa JSON che contiene un libro:
ParseJSON( "{""Title"":""Gulliver's Travels"", ""Author"": ""Jonathan Swift"", ""Published"": 1900}", BookType
)
L'utilizzo di BookType come secondo argomento di ParseJSON genera un record tipizzato che può essere utilizzato come qualsiasi altro record Power Fx.
Funzione RecordOf
Nell'esempio di Type funzione si inizia con BookType e si compila LibraryType eseguendo il wrapping di una tabella intorno a essa. Avremmo potuto definire questi tipi al contrario 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 ) );