Comparteix via


RecordOf i Type funcions

S'aplica a: Aplicacions de llenç

Construeix un tipus definit per l'usuari per utilitzar-lo amb funcions definides per l'usuari i valors sense tip.

Important

Descripció

Cada funció de defineix Power Fx els tipus de valors que es poden passar com a paràmetres i el tipus de sortida. Els tipus es comproven quan escriviu una fórmula i es mostren errors si no concorden amb el que s'espera. Els tipus també són utilitzats per l'editor per suggerir bones opcions sobre què passar a la funció i detectar errors el més aviat possible.

Quan creeu les vostres pròpies funcions definides per l'usuari, heu d'especificar els tipus d'entrada i sortida. Per a tipus senzills com Decimal o Text, això és fàcil ja que aquests tipus bàsics estan predefinits. Per a tipus més complexos, com ara registres o taules, utilitzeu la Type funció per crear el tipus.

La Type funció també facilita el treball amb els valors dinàmics. Amb les funcions ParseJSON, IsType i AsType , es pot convertir un valor dinàmic en un objecte tipat en el qual les columnes ja no s'han d'escriure individualment en el punt d'ús.

La Type funció pren un TypeSpecification com a únic argument. L'especificació de tipus més senzilla és fer referència a un tipus existent, per exemple Type( Text ). Una especificació de tipus per a un registre o una taula és similar a la definició d'un registre o d'una taula amb valors literals, on els valors se substitueixen per noms de tipus. Per exemple, {Name: "Jane"} s'escriuria amb Type( {Name: Text} ). Les taules s'especifiquen amb claudàtors, no amb la funció Taula , i només es pot proporcionar un registre. Per exemple, [1,2,3] s'escriuria amb Type( [Number] ).

Utilitzeu la RecordOf funció per extreure el tipus de registre d'un tipus de taula. Per exemple, Type( RecordOf( Library ) ) retornaria el tipus d'un sol llibre de la biblioteca. Per crear un tipus de taula a partir d'un tipus de registre, Empaqueta el tipus de registre entre claudàtors. Per exemple, Type( [ Book ] ) defineix una biblioteca. RecordOf només es pot utilitzar dins de la Type funció.

La Type funció i el valor de tipus que retorna només es poden utilitzar en llocs específics del Power Fx, com ara el segon argument de ParseJSON. A les aplicacions de llenç, la Type funció es pot utilitzar amb una fórmula amb nom a App.Formulas.

Sintaxi

RecordOf( Tipus de taula )

  • TypeTable: obligatori. El nom del tipus d'una taula. Això no accepta una especificació de tipus, ha de ser el nom d'un tipus definit prèviament per a una taula.

Type( Especificació de tipus )

  • TypeSpecification – Obligatori. Una especificació de tipus.

Exemples

Type funció

Considereu les definicions següents a 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 ] );

Observeu com el text "A Study in Scarlet" del títol real es substitueix pel nom Text del tipus a l'especificació del tipus, un marcador de posició per a qualsevol valor de text. Un paràmetre o variable de tipus BookType pot contenir un dels llibres Library, mentre que LibraryType pot contenir tota la taula. Amb aquests tipus, podem definir aquestes funcions definides per l'usuari:

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é podeu utilitzar el BookType per analitzar una cadena JSON que conté un llibre:

ParseJSON( "{""Title"":""Gulliver's Travels"", ""Author"": ""Jonathan Swift"", ""Published"": 1900}", BookType
)

L'ús BookType com a segon argument de ParseJSON dóna com a resultat un registre escrit que es pot utilitzar com qualsevol altre Power Fx registre.

RecordOf funció

A l'exemple de Type la funció, comenceu i BookType construïu LibraryType embolicant-hi una taula. Podríem haver definit aquests tipus a l'inrevés amb:

// 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 ) );