Zdarzenia
Powerful Devs Conference and Hack Together
12 lut, 23 - 28 lut, 23
Dołącz do konferencji online i 2-tygodniowego hackathonu, aby zapoznać się z tworzeniem zaawansowanych rozwiązań za pomocą platformy Power Platform.
Zarejestruj się terazTa przeglądarka nie jest już obsługiwana.
Przejdź na przeglądarkę Microsoft Edge, aby korzystać z najnowszych funkcji, aktualizacji zabezpieczeń i pomocy technicznej.
Uwaga
Microsoft Power Fx to nowa nazwa języka formuł dla aplikacji kanw. Te artykuły są pracą w toku, gdyż stale wyodrębniamy język z aplikacji kanw, integrujemy go z innymi produktami Microsoft Power Platform i udostępniamy jako rozwiązanie open source. Zacznij od przeglądu Microsoft Power Fx, aby znaleźć wprowadzenie do języka.
Microsoft Power Fx jest oparte na formułach, które łączą nazwę z wyrażeniem. Podobnie jak w arkuszach programu Excel, jak zależności przychodzące od zmiany wyrażenia, wyrażenie jest ponownie przeliczane, a wartość nazwy zmienia się, a następnie kaskadowo przeliczana jest na inne formuły.
Ta gramatyka odpowiedzialna jest za wyrażenie w formule. Powiązanie z nazwą, aby utworzyć formułę, zależy od tego, jak zintegrowane jest Power Fx. W arkuszach składnia połączenia nie jest wyeksponowana, ale jest ona zapisywana przez lokalizację, w której zostało zapisane wyrażenie — na przykład przez wprowadzenie wyrażenia =B1
w komórce A1. W niektórych przypadkach nie jest w ogóle wymagane powiązanie, a Power Fx używane jest jako narzędzie do oceny wyrażeń. Np. ma to miejsce w przypadku obsługi kolumn obliczanych w tabeli bazy danych. W przypadku Power Apps, powiązanie jest niejawne podczas pracy w Power Apps Studio za pomocą formatu seryjnego opartego na YAML do użycia poza Power Apps Studio.
Gramatyki leksykalne i składniowe są prezentowane przy użyciu produkcji gramatyki. Każda produkcja gramatyki definiuje symbol niekońcowy i możliwe rozszerzenia tego symbolu na sekwencje symboli niekońcowych i końcowych. W przypadku produkcji gramatyki symbole niekońcowe są pisane kursywą, a symbole końcowe są pisane czcionką o stałej szerokości.
Pierwszy wiersz produkcji gramatyki jest nazwą zdefiniowanego symbolu niekońcowego, po którym następuje dwukropek. Każdy kolejny wiersz z wcięciem zawiera możliwe rozszerzenie niekońcowe podane jako sekwencja symboli niekońcowych lub końcowych. Na przykład produkcja:
Identyfikator globalny:
[@
Identyfikator]
Definiuje element GlobalIdentifier, który ma składać się z tokenu [@
, po nim identyfikatora, a po nim tokenu ]
.
Jeśli istnieje więcej niż jedno możliwe rozszerzenie symbolu niekońcowego, alternatywy są wyświetlane w oddzielnych wierszach. Ten sufiks jako indeks dolny „opcjonalnie” jest używany do wskazania opcjonalnego symbolu. Na przykład produkcja:
Wywołanie funkcji:
FunctionIdentifier(
FunctionArgumentsopt)
to skrócona forma produkcji:
Wywołanie funkcji:
Identyfikator funkcji(
)
FunctionIdentifier(
Argumenty funkcji)
Alternatywy są zwykle wyświetlane w oddzielnych wierszach, chociaż w przypadkach, gdy istnieje wiele alternatyw, fraza „jedno z następujących” może poprzedzać listę rozszerzeń podaną w jednym wierszu. Jest to po prostu skrócony sposób wyświetlania każdej z alternatyw w osobnych wierszach.
Na przykład produkcja:
Cyfra dziesiętna:jedna z
0
1
2
3
4
5
6
7
8
9
to skrócona forma produkcji:
Cyfra dziesiętna:
0
1
2
3
4
5
6
7
8
9
Produkcja jednostek alfabetycznych definiuje leksykę gramatyczną wyrażenia Power Fx. Każde prawidłowe wyrażenie Power Fx jest zgodne z tą gramatyką.
Jednostka wyrażenia:
Opcja ExpressionElements
Elementy wyrażenia:
Element wyrażenia
ExpressionElementExpressionElementsopcjonalnie
Element wyrażenia:
Odstępu
Komentarz
Na poziomie leksykalnym wyrażenie Power Fx składa się ze strumienia elementów Whitespace, Comment i Token. Każda z tych produkcji została omówiona w poniższych sekcjach. Tylko elementy token są istotne w gramatyce składniowej.
Białe znaki są używane do oddzielania komentarzy i tokenów w dokumencie Power Apps.
Białe znaki:
dowolny separator spacji Unicode (klasa Zs)
dowolny separator linii Unicode (klasa Zl)
dowolny separator akapitu Unicode (klasa Zp)
Znak tabulacji poziomej (U+0009)
Znak wysuwu wiersza (U+000A)
Znak tabulacji pionowej (U+000B)
Znak wysuwu strony (U+000C)
Znak powrotu karetki (U+000D)
Znak następnego wiersza (U+0085)
Obsługiwane są dwa typy komentarzy:
//
i przechodzą do końca wiersza źródłowego./*
i kończą się znakami */
. Komentarze z ogranicznikami mogą obejmować wiele wierszy.
Komentarz:
Rozdzielany komentarz
Komentarz jednowierszowy
Komentarz jednowierszowy:
//
SingleLineCommentCharactersopt
SingleLineCommentCharacters:
SingleLineCommentCharacter
SingleLineCommentCharacterSingleLineCommentCharactersopt
SingleLineCommentCharacter:
wszelkie znaki Unicode poza znakiem NewLineCharacter
Ograniczony komentarz:
/*
DelimitedCommentCharactersopt*/
DelimitedCommentCharacters:
DelimitedCommentCharactersNoAsteriskDelimitedCommentCharactersopt
*
DelimitedCommentAfterAsteriskCharacters
DelimitedCommentAfterAsteriskCharacters:
OgraniczonaKomentarzNoSlashGwiazdkaZnakOgraniczonyKomentarzZnakiopt
*
DelimitedCommentAfterAsteriskCharacters
DelimitedCommentCharactersNoAsterisk:
Dowolny znak Unicode z wyjątkiem gwiazdki (*)
OgraniczonaKomentarzNoSlashGwiazdkaPostać:
Dowolny znak Unicode z wyjątkiem ukośnika (/) oraz gwiazdki (*)
Komentarze nie są zagnieżdżone. Sekwencje znaków /*
i */
nie mają specjalnego znaczenia w komentarzu jednowierszowym, a sekwencje znaków //
i /*
nie mają specjalnego znaczenia w komentarzu z ogranicznikami.
Komentarze nie są przetwarzane w literałach tekstowych.
W następującym przykładzie przedstawiono dwa komentarze z ogranicznikami:
/* Hello, world
*/
"Hello, world" /* This is an example of a text literal */
W poniższych przykładach przedstawiono trzy jednowierszowe komentarze:
// Hello, world
//
"Hello, world" // This is an example of a text literal
Element literał jest reprezentacją wartości w kodzie źródłowym.
Dosłownie:
Literał logiczny
Literał liczbowy
Literał tekstowy
Literał logiczny jest używany do zapisywania wartości true i false i produkuje wartość logiczną.
LogicalLiteral:jeden z
true
false
Literał liczbowy jest używany do zapisywania wartości liczbowej i produkuje wartość liczbową.
Literał liczbowy:
Cyfry dziesiętne Wykładnik...części opcjonalnej
Cyfrydziesiętne SeparatorCyfrydziesiętne wybierzWykładnikCzęśćopt
SeparatordziesiętnyCyfrydziesiętne WykładnikCzęśćopt
Cyfry dziesiętne:
Cyfra dziesiętna
Cyfry dziesiętne Cyfradziesiętna
Cyfra dziesiętna:jedna z
0
1
2
3
4
5
6
7
8
9
Część wykładnicza:
ZnakwykładnikaoptDecimalDigits
Literał tekstowy jest używany do zapisania sekwencji znaków Unicode i produkuje wartość tekstową. Literały tekstowe są zamknięte w cudzysłów. Aby uwzględnić w wartości tekstowej cudzysłowy, powtórz te cudzysłowy, jak pokazano w następującym przykładzie:
"The ""quoted"" text" // The "quoted" text
Literał tekstowy:
"
TextLiteralCharacterswybiera opcję"
TextLiteralCharacters:
TextLiteralCharacterTextLiteralCharacterswybierz opcję
TextLiteralCharacter:
TextCharacterNoDoubleQuote (TekstPostaćNiepodwójnyCytat)
DoubleQuoteEscapeSequence (Sekwencja ucieczki DoubleQuote)
TextCharacterNoDoubleQuote:
dowolny znak punktowy Unicode z wyjątkiem podwójnego cudzysłowu
DoubleQuoteEscapeSequence:
"
"
Element identyfikator to nazwa używana do odwoływania się do wartości. Identyfikatory mogą być zwykłymi identyfikatorami lub identyfikatorami w cudzysłowie pojedynczym.
Identyfikator:
IdentifierName,alenieOperatorlubContextKeyword
IdentyfikatorNazwa:
IdentifierStartCharacterIdentifierContinueCharactersopt
'
SingleQuotedIdentifier (Identyfikator pojedynczego cytatu)'
IdentifierStartCharacter:
LiteraZnak
_
IdentifierContinueCharacter:
IdentifierStartCharacter (IdentyfikatorZnakPoczątkowy)
Cyfra dziesiętna
ŁącznikPostać
CombiningCharacter (ŁączeniePostaci)
FormattingCharacter (FormattCharacter)
IdentifierContinueCharacters:
IdentifierContinueCharacterIdentifierContinueCharactersopt
LiteraZnak:
dowolny znak Unicode klasy Wielkie litery (Lu) lub Małe litery (Ll)
dowolny znak Unicode z klasy Jak nazwy własne (Lt)
dowolny znak Unicode klasy Modyfikator litery (Lm) lub Inne litery (Lo)
dowolny znak Unicode z klasy Liczba litera (Nl)
ŁączeniePostać:
dowolny znak Unicode klasy Znak bez odstępów (Mn) lub Znak łączący odstępy (Mc)
Cyfra dziesiętna:
dowolny znak Unicode klasy Liczba dziesiętna (Nd)
ŁącznikPostać:
dowolny znak Unicode klasy Łącznik interpunkcji (Pc)
Formatowanie znaku:
dowolny znak Unicode klasy Format (Cf)
Element identyfikator-w-pojedynczym-cudzysłowie może służyć do zezwalania na użycie jako identyfikator dowolnej sekwencji zawierającej zero lub więcej znaków Unicode, co obejmuje słowa kluczowe, białe znaki, komentarze i operatory. Pojedyncze znaki cudzysłowu są obsługiwane z sekwencją dwóch cudzysłowów.
SingleQuotedIdentifier:
SingleQuotedIdentifierCharacters (SingleQuotedIdentifierCharacters)
SingleQuotedIdentifierCharacters:
SingleQuotedIdentifierCharacterSingleQuotedIdentifierCharactersopcjonalnie
SingleQuotedIdentifierCharacter:
TextCharactersNoSingleQuote
SingleQuoteEscapeSequence (Sekwencja ucieczki)
TextCharactersNoSingleQuote:
Dowolny znak Unicode z wyjątkiem ' (U+0027)
SingleQuoteEscapeSequence:
'
'
DisambiguatedIdentifier:
Identyfikator kolumny tabeli
Identyfikator globalny
Identyfikator kolumny tabeli:
Identyfikator[@
Identyfikator]
Identyfikator globalny:
[@
Identyfikator]
KontekstSłowo kluczowe:
Parent
Self
ThisItem
ThisRecord
Power Apps rozróżnia wielkość liter w identyfikatorach. Narzędzie do tworzenia automatycznie zamieni je na odpowiedni rozmiar w trakcie pisania formuły.
Separator dziesiętny:
.
(kropka) dla języków, w których kropka jest separatorem liczb dziesiętnych, na przykład 1.23
,
(przecinek) w przypadku języków, w których przecinek służy jako separator liczb dziesiętnych, na przykład 1,23
ListSeparator:
,
(przecinek) jeśli separator dziesiętny to .
(kropka)
;
(średnik), jeśli separator dziesiętny to ,
(przecinek)
Separator łańcuchowy:
;
(średnik), jeśli separator dziesiętny ma wartość .
(kropka)
;;
(podwójny średnik), jeśli DecimalSeparator to ,
(przecinek)
Operatory są używane w formułach w celu opisywania operacji obejmujących co najmniej jeden operand. Na przykład wyrażenie a + b
używa operatora +
, aby dodać dwa operandy a
i b
.
Operator:
BinaryOperator
BinaryOperatorRequiresWhitespace
PrefixOperator (Operator prefiksu)
PrefixOperatorRequiresWhitespace
Operator przyrostka
BinaryOperator:jeden z
=
<
<=
>
>=
<>
+
-
*
/
^
&
&&
||
in
exactin
BinaryOperatorRequiresWhitespace:
And
Odstępu
Or
Odstępu
PrefixOperatorRequiresWhitespace:
Not
Odstępu
Odniesienie:
Odniesienie podstawowe
BaseReferenceReferenceOperatorReferenceList
Odniesienie podstawowe:
Identyfikator
DisambiguatedIdentifier (Identyfikator ujednoznaczniony)
Słowo kluczowe kontekstu
Lista referencji:
Identyfikator
IdentyfikatorReferenceOperatorReferenceList
Rekord w linii:
{
Opcja InlineRecordList}
InlineRecordList:
Wyrażenie identyfikatora:
...
Identifier:
ExpressionListSeparatorInlineRecordList
Tabela wbudowana:
[
Opcja InlineTableList]
InlineTableList:
Wyrażenie
WyrażenieListSeparatorInlineTableList
Wyrażenie:
Dosłowny
Odniesienie
Rekord w tekście
Tabela wbudowana
Wywołanie funkcji
(
Wyrażenie)
Wyrażenie PrefixOperator...
WyrażeniePostfixOperator
WyrażenieBinaryOperatorExpression
ChainedExpression:
Wyrażenie
WyrażenieChainingSeparatorChainedExpressionopt
Wywołanie funkcji:
FunctionIdentifier(
FunctionArgumentsopt)
Identyfikator funkcji:
Identyfikator
Identyfikator.
FunctionIdentifier
Argumenty funkcji:
ChainedExpression (Wyrażenie łańcuchowe)
ChainedExpressionListSeparatorFunctionArguments
Zdarzenia
Powerful Devs Conference and Hack Together
12 lut, 23 - 28 lut, 23
Dołącz do konferencji online i 2-tygodniowego hackathonu, aby zapoznać się z tworzeniem zaawansowanych rozwiązań za pomocą platformy Power Platform.
Zarejestruj się teraz