Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: aplikacje kanwy
Tworzy typ zdefiniowany przez użytkownika do użycia z funkcjami zdefiniowanymi przez użytkownika i wartościami bez typu.
Ważne
- Te funkcje są eksperymentalne.
- Funkcje eksperymentalne nie są przeznaczone do użytku produkcyjnego i mogą nie być kompletne. Te funkcje są udostępniane przed oficjalnym wydaniem, dzięki czemu można szybciej uzyskać do nich dostęp i przekazać opinie na ich temat. Więcej informacji: Zrozumienie eksperymentalnych, podglądowych i wycofanych funkcji w aplikacjach kanwy
- Zachowanie opisane w tym artykule jest dostępne tylko wtedy, gdy funkcja eksperymentalna Typy zdefiniowane przez użytkownika w Ustawienia > Nadchodzące funkcje > Eksperymentalne jest włączona (domyślnie jest wyłączona).
- Twoja opinia jest cenna. Daj nam znać, co myślisz w forum społeczności funkcji eksperymentalnych Power Apps.
Podpis
Każda funkcja w Power Fx określa typy wartości, które mogą być przekazywane jako parametry, oraz typ danych wyjściowych. Typy są sprawdzane podczas pisania formuły i wyświetlane są błędy, jeśli nie zgadzają się z oczekiwaniami. Typy są również używane przez edytora, aby zasugerować dobre opcje dotyczące tego, co należy przekazać do funkcji i wykryć błędy tak wcześnie, jak to możliwe.
Podczas tworzenia własnych funkcji zdefiniowanych przez użytkownika należy określić typy danych wejściowych i wyjściowych. W przypadku prostych typów, takich jak Dziesiętne lub Tekst, jest to łatwe, ponieważ te podstawowe typy są predefiniowane. W przypadku bardziej złożonych typów, takich jak rekordy lub tabele, użyj Type funkcji , aby utworzyć typ.
Funkcja Type ułatwia również pracę z wartościami dynamicznymi. W przypadku funkcji ParseJSON, IsType i AsType można przekonwertować wartość dynamiczną na typowy obiekt, w którym kolumny nie muszą być już wpisywane indywidualnie w punkcie użycia.
Funkcja Type przyjmuje atrybut TypeSpecification jako jedyny argument. Najprostszą specyfikacją typu jest odwołanie się do istniejącego typu, na przykład Type( Text ). Specyfikacja typu dla rekordu lub tabeli jest podobna do definiowania rekordu lub tabeli z wartościami literałów, gdzie wartości są zastępowane nazwami typów. Na przykład {Name: "Jane"} zostanie wpisany z Type( {Name: Text} ). Tabele są określane za pomocą nawiasów kwadratowych, a nie funkcji Table i można podać tylko jeden rekord. Na przykład [1,2,3] zostanie wpisany z Type( [Number] ).
RecordOf Użyj funkcji , aby wyodrębnić typ rekordu z typu tabeli. Na przykład Type( RecordOf( Library ) ) zwróci typ pojedynczej książki z biblioteki. Aby utworzyć typ tabeli z typu rekordu, należy umieścić typ rekordu w nawiasach kwadratowych. Na przykład Type( [ Book ] ) definiuje bibliotekę.
RecordOf można używać tylko w Type ramach funkcji .
Funkcja Type i zwracana wartość typu mogą być używane tylko w określonych miejscach w usłudze Power Fx, takich jak drugi argument parseJSON. W aplikacjach Type kanwy funkcja może być używana z nazwaną formułą w pliku App.Formulas.
Składnia
RecordOf( TableType )
- TableType – wymagany. Nazwa typu tabeli. Nie akceptuje specyfikacji typu, musi to być nazwa wcześniej zdefiniowanego typu dla tabeli.
Type( TypeSpecification )
- TypeSpecification – wymagane. Specyfikacja typu.
Przykłady
Funkcja Type
Rozważmy następujące definicje w 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 ] );
Zwróć uwagę, jak rzeczywisty tekst tytułu "A Study in Scarlet" został zastąpiony nazwą typu Text w specyfikacji typu, będącej symbolem zastępczym dla dowolnej wartości tekstowej. Parametr lub zmienna typu BookType może przechowywać jedną z ksiąg z Library, ale LibraryType może przechowywać całą tabelę. Mając te typy, możemy zdefiniować następujące funkcje zdefiniowane przez użytkownika:
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);
Możesz również użyć BookType, aby przeanalizować ciąg JSON, który zawiera książkę:
ParseJSON( "{""Title"":""Gulliver's Travels"", ""Author"": ""Jonathan Swift"", ""Published"": 1900}", BookType
)
Użycie BookType jako drugiego argumentu do ParseJSON daje w rezultacie typowany rekord, który może być używany jak każdy inny rekord Power Fx.
Funkcja RecordOf
W przykładzie Type funkcji zaczynasz od BookType i kompilujesz LibraryType , opakowując wokół niej tabelę. Mogliśmy zdefiniować te typy w odwrotnej kolejności za pomocą:
// 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 ) );