שתף באמצעות


Power Fxדקדוק הנוסחאות של YAML

הערה

Microsoft Power Fx הוא השם החדש של שפת הנוסחה של יישומי בד ציור. מאמרים אלה ימשיכו להתעדכן בזמן שאנו מזקקים את השפה מיישומי בד ציור, משלבים אותה עם מוצרי Microsoft Power Platform האחרים, והופכים אותם לזמינים כמוצר קוד פתוח. התחל עם מבט כולל על Microsoft Power Fx כדי לערוך היכרות עם השפה.

Microsoft Power Fx משתמש בדקדוק מבוסס היטב עבור ביטויים המבוססים על Excel. עם זאת, כאשר משתמשים בו ב- Power Apps ובמארחים אחרים שבהם ממשק המשתמש מספק את איגוד השם-אל-ביטוי עבור נוסחה, אין דרך סטנדרטית לערוך את איגוד הנוסחה כטקסט.

בחרנו בתקן התעשייה YANL כשפה שלנו עבור איגוד זה. יש כבר מספר גדול של עורכים, כלים וספריות לעבודה עם YAML. מאמר זה מתאר כיצד אנחנו מייצגים נוסחאות ב- YAML.

בשלב זה אנחנו תומכים רק בקבוצת משנה מוגבלת של YAML. רק המבנים המתוארים במאמר זה נתמכים.

לא כל מה שמגדיר יישום בד ציור מוצג כאן; מידע נוסף מגיע דרך קבצים אחרים שהכלי מייצר וצורך.

סימן שוויון מוביל

בראש ובראשונה, כל הביטויים חייבים להתחיל בסימן שוויון מוביל =:

Visible: =true
X: =34
Text: |
	="Hello, " &
	"World"

אנחנו משתמשים ב- = באופן זה משלוש סיבות:

  • גישה זו עולה בקנה אחד עם Excel, שמשתמש ב- = מוביל כדי לאגד ביטוי לתא.
  • למעשה, תחביר שפת הנוסחה מבוטל כך ש- YAML לא ינסה לנתח אותו. בדרך כלל, YAML היה מתייחס לערך text: 1:00 כאל דקות ושניות, וממיר אותו למספר. על-ידי הוספת =,‏ YAML לא ישתמש בכללי ההקלדה המשתמעים שלו והנוסחאות לא ייפגעו. השימוש ב- = מכסה את רוב המקרים, אך לא את כולם, וחריגים אלה מתוארים בסעיף הבא, נוסחאות בשורה אחת.
  • בעתיד נתמוך גם בנוסחאות (מתחילות ב- =) וגם בערכים שאינם נוסחאות (ללא =) באותו קובץ, בדיוק כמו ב- Excel. אנו יכולים לעשות זאת בקבצי YAML ובקבצים שאינם של YAML בכל קבצי המקור של Microsoft Power Platform. בכל מקום שבו נוסחה נתמכת, סימן ה- = הפותח מבדיל בין ביטוי נוסחה של Power Apps ובין ערך סקלרי סטטי.

נוסחאות של שורה אחת

נוסחאות של שורה אחת נכתבות בצורה הבאה:

שם:SPACE=ביטוי

הרווח בין הנקודתיים לסימן השוויון צריך להיות תואם ל- YAML. סימן השוויון משבש את הפרשנות הרגילה של YAML לביטוי, ומאפשר לפרש את שאר השורה כ- Power Fx. לדוגמה:

Text1: ="Hello, World"
Text2: ="Hello " & ", " & "World"
Number1: =34
Boolean1: =true
Time1: =1:34

לא ניתן להשתמש בסימן המספר # ובנקודתיים : בשום מקום בנוסחאות של שורה אחת, גם אם הם נכללים בתוך מחרוזת טקסט או שם מזהה. כדי להשתמש בסימן מספר או נקודתיים, עליך לבטא את הנוסחה כנוסחה מרובת שורות. סימן המספר מפורש כהערה ב- YAML, והנקודתיים מפורשים כמפת שם חדש ב- YAML. כדי להוסיף הערה להערה בשורה אחת, השתמש בתגובת השורה של Power Fx שמתחילה ב- //.

שימוש בביטול רגיל של YAML באמצעות גרשיים בודדים וקווים נטויים כמו בשפת C אינו נתמך; במקום זאת השתמש בנוסחה מרובת שורות. זאת כדי לשמור על עקביות וכדי להקל על פעולות הגזירה/הדבקה בין סרגל הנוסחאות ב- Power Apps Studio לקבצי המקור של YAML.

עיין בתיעוד של אופרטורים ומזהים של יישום בד הציור לקבלת פרטים על שמות מותרים ועל המבנה של ביטוי.

נוסחאות מרובות שורות

נוסחאות יכולות להתפרס על-פני שורותמרובות באמצעות קווים באמצעות מחווני הבלוק הסקלריים של YAML:

שם:SPACE ( | או |+ או |- ) =קו ביטוי ביטוי-קו ...

יש להסיט את כל השורות הכלולות בבלוק רווח אחד לפחות מהרמה של השורה הראשונה.

לדוגמה:

Text1: |
    ="Hello, World"
Text2: |
    ="Hello" &
    "," &
    "World"

כל הצורות של הסימונים הסקלריים מרובי השורות של YAML מתקבלות בזמן ייבוא, כולל >+, לדוגמה. עם זאת, כדי להבטיח שהרוווח הלבן יישמר כראוי, רק |, |+ או |- מיוצרים.

מופע של רכיב

מופעי רכיבים נוצרים באמצעות סימון אובייקט של YAML. סוג האובייקט נקבע באמצעות האופרטור As כחלק מתג YAML בצד שמאל. אובייקטים יכולים להיות מקוננים לצורך פקדים של גורם מכיל.

שםAsרכיב-סוג [ .רכיב-תבנית ] : ( Single-Line-Formula או Multi-Line-Formula או Object-instance ) ...

יש להסיט את כל השורות הכלולות בבלוק רווח אחד לפחות מהרמה של השורה הראשונה.

לדוגמה:

Gallery1 As Gallery.horizontalGallery:
    Fill: = Color.White
    Label1 As Label:
        Text: ="Hello, World"
        X: =20
        Y: =40
        Fill: |
            =If( Lower( Left( Self.Text, 6 ) ) = "error:",
                Color.Red,
                Color.Black
            ) 

Component-Type יכול להיות כל רכיב קנבס או פקד. סוגי בסיס, כמור מספר, אינם נתמכים.

Component-Template הוא מפרט אופציונלי לרכיבים שיש להם תבניות שונות, כגון הגלריה. לא לכל הרכיבים יש תבניות.

אם שם מכיל תווים מיוחדים ונכלל בתוך סימני גרשיים בודדים, יש צורך לבצע escape לביטוי כולו שנמצא משמאל לנקודתיים. ניתן לבטל זאת באחת מהדרכים הבאות:

  • השתמש בסימני גרשיים בודדים כדי להקיף את הצד השמאלי במלואו, לשם כך יש להשתמש בסימני הגרשיים הבודדים הקיימים פעמיים:
    '''A name with a space'' As Gallery':
    
  • השתמש במירכאות כפולות כדי להקיף את הצד השמאלי במלואו, אך הקפד שלא לכלול מירכאות כפולות בשם:
    "'A name with a space' As Gallery":
    

הגדרת רכיבים

באופן דומה, רכיבים מוגדרים על ידי יצירת מופע של אחד מסוגי הבסיס הנתמכים. לא ניתן ליצור מופעים של סוגי הבסיס באופן ישיר. במסגרת הגדרת אובייקט, ניתן להוסיף מאפיינים למה שסוג הבסיס מספק.

סוגי הבסיס הנתמכים הם: CanvasComponent

הגדרת מאפיין פשוט

רכיבים משתמשים במאפיינים כדי לנהל תקשורת עם היישום שבו הם מתארחים.

שם: ( Single-Line-Expression או Multi-Line-Expression )

סוג הנוסחה משתמע מסוג הביטוי.

עבור מאפייני קלט, הביטוי מספק את ברירת המחדל שיש להוסיף ליישום בעת יצירת המופע של הרכיב. היצרן יכול לשנות ביטוי זה כראות עיניו, אך אינו יכול לשנות את הסוג.

עבור מאפייני פלט, הביטוי מספק את החישוב שיש לבצע. היצרן לא יכול לשנות ביטוי זה, הוא עטוף בתוך הרכיב.

נכון לעכשיו, כל המאפיינים הם זרימת נתונים בלבד ואינם יכולים להכיל תופעות לוואי.

בשלב זה, מטה-נתונים נוספים על המאפיין אינם מוגדרים כאן, אך במקום זאת מוגדרים בקבצים האחרים של קובץ .msapp, למשל תיאור המאפיין.

לדוגמה:

DateRangePicker As CanvasComponent:
    DefaultStart: |-
		=// input property, customizable default for the component instance
		Now()                      
    DefaultEnd: |-
		=// input property, customizable default for the component instance
		DateAdd( Now(), 1, Days )    
    SelectedStart: =DatePicker1.SelectedDate   // output property
    SelectedEnd: =DatePicker2.SelectedDate     // output property

תאימות YAML

הערות YAML

הערות שורה של YAML שמופרדות באמצעות סימן המספר # לא נשמרות במקום כלשהו בתבנית המקור. במקום זאת, בתוך נוסחה, ניתן לתחום את הערות השורות בעזרת תווי // או לחסום הערות בעזרת /* ו- */. מידע נוסף: הערות

שגיאות לטיפול בבעיות נפוצות

ישנם כמה מקומות שבהם הדקדוק של Power Fx ושל YAML אינו תואם או עלול לבלבל את המשתמש. במקרים אלה מוצגת שגיאה.

לדוגמה, במקרה הבא:

Text: ="Hello #PowerApps"
Record: ={ a: 1, b: 2 }

סימן המספר # מפורש כהערה ב- YAML, גם כשהוא מוטבע בתוך מה ש- Excel מחשיב כמחרוזת טקסט (מוקף במירכאות כפולות). כדי למנוע בלבול, במקרה זה תוצג שגיאה במהלך הייבוא. במקום זאת ניתן להשתמש בטופס מרובה שורות של YAML.

במקרה של ערך עבור record,‏ YAML מחשיב את a: ו- b: כאיגוד מפת שמות אחר. YAML מאפשר לעשות שימוש חוזר באותה מפת שמות, כשהאחרונה דורסת בשקט את כל ההגדרות הקודמות. מכיוון שהדבר עלול לבלבל יצרנים המשתמשים במעט קוד ואף לגרום לאובדן נוסחת מאפיין, כאשר המערכת נתקלת באותו שם פעמיים היא מציגה שגיאה.