Белешка
Приступ овој страници захтева ауторизацију. Можете покушати да се пријавите или промените директоријуме.
Приступ овој страници захтева ауторизацију. Можете покушати да промените директоријуме.
Односи се на: Цанвас апликације
Конструише кориснички дефинисани тип за употребу са кориснички дефинисаним функцијама и нетиписаним вредностима.
Description
Свака функција у Power Fx дефинише типове вредности које се могу пренети као параметри и тип излаза. Типови се проверавају када пишете формулу и грешке се приказују ако се не слажу са оним што се очекује. Типови се такође користе од стране уредника да предложи добре опције за оно што треба да пренесе у функцију и открије грешке што је раније могуће.
Приликом креирања сопствених кориснички дефинисаних функција, потребно је да наведете типове улаза и излаза. За једноставне типове као што су Децимал или Текст , ово је лако јер су ови основни типови унапред дефинисани. За сложеније типове, као што су записи или табеле, користите Type функцију да бисте креирали тип.
Функција Type такође олакшава рад са динамичким вредностима. Са функцијама ПарсеЈСОН, ИсТипе и АсТипе , динамичка вредност се може претворити у откуцани објекат у којем колоне више не морају бити појединачно откуцане на месту употребе.
Функција Type узима ТипеСпецифицатион као свој једини аргумент. Најједноставнија спецификација типа је да се упућује на постојећи тип, на пример Type( Text ). Спецификација типа за запис или табелу је слична дефинисању записа или табеле са буквалним вредностима, где су вредности замењене именима типа. На пример, {Name: "Jane"} биће откуцано са Type( {Name: Text} ). Табеле су наведене са углатим заградама, а не са функцијом Табела , и може се обезбедити само један запис. На пример, [1,2,3] биће откуцано са Type( [Number] ).
Користите RecordOf функцију да бисте издвојили тип записа из типа табеле. На пример, Type( RecordOf( Library ) ) вратио би тип једне књиге из библиотеке. Да бисте направили тип табеле из < ДИЦТ__врста записа > рецорд тyпе , Умотавање < ДИЦТ__врста записа > рецорд тyпе у углатим заградама. На пример, Type( [ Book ] ) дефинише библиотеку.
RecordOf може се користити само у оквиру Type функције.
Функција Type и вредност типа коју враћа могу се користити само на одређеним местима у Повер Фкс-у, као што је други аргумент за ПарсеЈСОН. У апликацијама Type Цанвас, функција се може користити са именованом формулом у Апп.Формулас .
Syntax
RecordOf( Табела )
- ТаблеТyпе – Обавезно. Име типа табеле. Ово не прихвата спецификацију типа, то мора бити име претходно дефинисаног типа за табелу.
Type( ТипеСпецификација )
- ТyпеСпецифицатион – Обавезно. Спецификација типа.
Examples
Type Функцију
Размотрите следеће дефиниције у Апп.Формулас:
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 ] );
Обратите пажњу на то како је стварни текст "A Study in Scarlet" наслова замењен именом Text типа у спецификацији типа, резервним местом за било коју текстуалну вредност. Параметар или варијабла типа BookType може да држи једну од књига Library, док LibraryType може да држи целу табелу. Са овим типовима на месту, можемо дефинисати ове кориснички дефинисане функције:
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);
Такође можете користити да BookType парсујете ЈСОН стринг који садржи књигу:
ParseJSON( "{""Title"":""Gulliver's Travels"", ""Author"": ""Jonathan Swift"", ""Published"": 1900}", BookType
)
Коришћење BookType као други аргумент за ПарсеЈСОН резултира откуцаним записом који се може користити као и било који други Power Fx запис.
RecordOf Функцију
У Type примеру функције, почињете са BookType и градите LibraryType омотавањем стола око њега. Могли смо дефинисати ове типове обрнуто са:
// 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 ) );