Share via


מבט כולל על Microsoft Power Fx

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

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

הערה

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

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

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

Power Fx יהיה זמין כתוכנת קוד פתוח. כרגע הוא משולב ביישומי בד ציור, ואנחנו מחלצים אותו מ- Power Apps לשימוש במוצרי Microsoft Power Platform אחרים וכקוד פתוח. עוד מידע: Microsoft Power Fx ב-GitHub

מאמר זה כולל סקירה כללית של השפה ועקרונות העיצוב שלה. לקבלת מידע נוסף על Power Fx, עיין במאמרים הבאים:

גיליון אלקטרוני של Think

מה אם היית יכול לבנות יישום באותה קלות כמו שאתה בונה גליון עבודה ב-Excel?

מה אם אתה יכול לנצל את הידע הקיים בגיליון האלקטרוני שלך?

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

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

Power Fx לוקח את הצעד הזה קדימה. הביטוי בפני עצמו לא אומר שום דבר על מה שהוא מחשב. על היוצר למקם אותו במשתנה או להעביר אותו לפונקציה. ב- Power Fx, במקום לכתוב רק ביטוי שאין לו משמעות ספציפית, אתה כותב נוסחה שמאגדת את הביטוי למזהה. אתה כותב force = mass * acceleration כנוסחה לחישוב force. כאשר mass או acceleration משתנים, force יתעדכן אוטומטית לערך חדש. הביטוי תיאר חישוב, נוסחה נתנה לחישוב הזה שם והשתמשה בו כמתכון. מסיבה זו אנו מתייחסים ל- Power Fx כשפת נוסחאות.

למשל, הנוסחה מתוך Stack Overflow הזו מחפשת מחרוזת בסדר הפוך. ב-Excel זה נראה כמו התמונה הבאה.

חיפוש הפוך

צילום מסך של סרגל נוסחאות ב-Excel עם הנוסחה: = RIGHT (A1, LEN (A1) - FIND ("|", SUBSTITUTE (A1, "", "|", LEN (A1) -LEN (SUBSTITUTE (A1, " "," ")))) תא A1 מכיל את הטקסט "שלום עולם! כמה נחמד לפגוש אותך!" תא A2 מכיל את הטקסט "אותך!"

Power Fx עובד עם אותה נוסחה, כשההפניות לתאים מוחלפות בהפניות למאפייני פקדים:

חיפוש הפוך של Power Fx.

צילום מסך של שורת נוסחאות של Power Fx ב- Power Apps. הנוסחה היא ‎=RIGHT(Input.Text,Len(Input.Text)- FIND("|", SUBSTITUTE(Input.Text," ","|", Len(Input.Text)-Len(Substitute(Input.Text," ",""))))‎ בתיבת הקלט מתחת לנוסחה, הטקסט "שלום, עולם! נחמד לפגוש אותך!" מופיע, אות אחר אות. במקביל בתיבת התווית, מופיעות אותיות המילה האחרונה. כאשר הטקסט המלא מופיע בתיבת הקלט, המילה "אתה!" מופיעה בתיבה 'תווית'.

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

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

מחוון צבע.

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

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

מחווני צבעים של Power Fx.

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

Power Fx היא שפה הצהרתית, בדיוק כמו Excel. היוצר מגדיר איזו התנהגות הוא רוצה, אבל המערכת צריכה לקבוע איך ומתי לבצע זאת ולבצע מיטוב לתהליך. כדי שהתהליך יהיה מעשי, רוב העבודה נעשית באמצעות פונקציות טהורות ללא תופעות לוואי, דבר ההופך את Power Fx גם לשפה פונקציונלית (שוב, בדיוק כמו Excel).

פעילות ללא הפסקה

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

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

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

תגובה מידית.

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

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

קוד מועט

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

לדוגמה, כדי לחפש את השם הפרטי של עובד עבור הזמנה, יש לכתוב את Power Fx כפי שמוצג בהנפשה הבאה. מעבר למושגי Excel, הרעיון הנוסף היחיד המשמש כאן הוא סימון הנקודה "." להתעמקות במבנה נתונים, במקרה זה .Employee.'First Name'. ההנפשה מציגה את המיפוי בין חלקי נוסחת Power Fx והמושגים שיש לקודד במפורש ב- JavaScript המקביל.

JavaScript עם קידוד מועט.

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

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

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

  • נתונים יחסיים: הזמנות ולקוחות הם שתי טבלאות שונות, עם יחסי רבים-לאחד. שאילתת OData דורשת "$expand" כולל היכרות עם מפתח זר, בדומה ל- Join ב-SQL. כל הדברים האלה לא קיימים בנוסחה; למעשה, מפתחות של מסדי נתונים הם עוד מושג שהיוצר לא צריך להכיר. היוצר יכול להשתמש בסימון נקודות פשוט כדי לגשת לגרף הקשרים המלא מרשומה.

  • הקרנה: בעת כתיבת שאילתה מפתחים רבים כותבים select * from table, מה שמחזיר את כל עמודות הנתונים. Power Fx מנתח את כל העמודות הנמצאות בשימוש ביישום כולו, אפילו בין יחסי תלות בנוסחאות. ההקרנה ממוטבת באופן אוטומטי, ושוב, היוצר לא חייב לדעת מה פירוש המושג "הקרנה".

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

  • פועל רק כשצריך: הגדרנו נוסחה עבור מאפיין Text של פקד התווית. כאשר המשתנה שנבחר משתנה, הפונקציה LookUp מחושב מחדש באופן אוטומטי והתווית מתעדכנת. היוצר לא היה צריך לכתוב מטפל OnChange לבחירה ולא היה צריך לזכור שהתווית הזו תלויה בו. זהו תיכנות הצהרתי, כפי שהזכרנו מוקדם יותר: היוצר ציין מה הוא רוצה שיופיע בתווית, אבל לא איך ומתי צריך להביא אותה. אם תווית זו אינה גלויה מכיוון שהיא נמצאת על מסך שאינו גלוי, או שמאפיין Visible לא נכון, אנחנו יכולים לדחות את החישוב הזה עד שהתווית נראית ולסלק אותה ביעילות אם זה קורה לעיתים נדירות.

  • תרגום תחביר של Excel: רוב האנשים שמשתמשים ב-Excel יודעים שהסמל ampersand (&) משמש לשרשור מחרוזות. JavaScript משתמש בסימן חיבור (+), ושפות אחרות משתמשות בנקודה (.).

  • שמות תצוגה והתאמה לשפות אחרות: First Name נמצא בשימוש בנוסחה Power Fx בזמן ש- nwind_firstname נמצא בשימוש בשווה הערך של JavaScript. ב- Microsoft Dataverse ו- SharePoint, קיים שם תצוגה לעמודות וטבלאות בנוסף לשם לוגי ייחודי. שמות התצוגה לרוב הרבה יותר ידידותיים למשתמש, כמו במקרה זה, אך יש להם תכונה חשובה אחרת בכך שניתן למקם אותם. אם יש לך צוות רב לשוני, כל אחד מחברי הצוות יכול לראות את שמות הטבלאות והשדות בשפה שלו. בכל מקרי השימוש, Power Fx מוודא שהשם הלוגי הנכון נשלח למסד הנתונים באופן אוטומטי.

ללא קוד

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

בואו נסתכל על כמה דוגמאות. ב- Power Apps, לוח המאפיינים מספק מתגים וכפתורים "ללא קוד" עבור מאפייני הפקדים. בפועל, רוב ערכי המאפיינים הם סטטיים. אתה יכול להשתמש בבונה הצבעים כדי לשנות את צבע הרקע של Gallery. שים לב שסרגל הנוסחאות משקף את השינוי הזה ומעדכן את הנוסחה לשיחת RGBA שונה. אתה יכול לעבור בכל עת לשורת הנוסחאות ולקחת את זה צעד קדימה – בדוגמה זו, על ידי שימוש ב- ColorFade כדי להתאים את הצבע. מאפיין הצבע עדיין מופיע בחלונית המאפיינים, אבל סמל fx יופיע בריחוף ואתה תופנה לסרגל הנוסחאות. זה עובד באופן מלא בשתי דרכים: הסרה של שיחת ColorFade תחזיר את הצבע למשהו שלוח המאפיינים יכול להבין, ואתה יכול להשתמש בו שוב כדי להגדיר צבע.

צבע ללא קידוד.

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

מיון ללא קידוד.

אלה היו דוגמאות פשוטות. אנו סבורים ש- Power Fx היא שפה מצוינת לתיאור אינטראקציות ללא קוד. היא תמציתית, עוצמתית וקלה לניתוח, ומספקת את המרווח שלעתים נדרש כאשר משתמשים במרחב שבין "no cliffs" עד קידוד מועט.

קידוד מקצועי

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

אנשי מקצוע רוצים להשתמש בכלים מקצועיים כדי להיות פרודוקטיביים יותר. ניתן לאחסן נוסחאות של Power Fx בתוך קבצי מקור של YAML, שקל לערוך אותם באמצעות Visual Studio Code,‏ Visual Studio או כל עורך טקסט אחר ומאפשר לשים את Power Fx תחת שליטת המקור עם GitHub,‏ Azure DevOps או כל מערכת בקרת קוד מקור אחרת.

קוד מקצועי של Visual Studio Code.

קוד מקצועי - GitHub.

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

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

עקרונות עיצוב

פשוט

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

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

עקביות עם Excel

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

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

הצהרתי

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

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

פונקציונלי

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

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

חיבור

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

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

שימוש רב בסוגים

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

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

היסק סוג

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

שימוש בסוגים מתנגשים גורם לשגיאת זמן הידור.

מפרידים עשרוניים רגישים לאזור

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

לבחירת המפריד העשרוני יש השפעה מדורגת על מפריד הרשימה, המשמש לארגומנטים של קריאה לפונקציה, ועל אופרטור השרשור:

המפריד העשרוני של שפת העורך המפריד העשרוני של Power Fx מפריד הרשימה של Power Fx אופרטור השרשור של Power Fx
. (נקודה) . (נקודה) , (פסיק) ; (נקודה-פסיק)
, (פסיק) , (פסיק) ; (נקודה-פסיק) ;; (נקודה-פסיק כפול)

למידע נוסף: תמיכה גלובלית

לא מונחה אובייקטים

Excel אינו מונחה אובייקטים, וגם Power Fx אינו מונחה אובייקטים. לדוגמה, בשפות מסוימות, האורך של מחרוזת מבוטא כמאפיין של המחרוזת, למשל "Hello World".length, ב-JavaScript. במקום זאת, Excel ו- Power Fx מבטאים אורך זה במונחים של פונקציה, כמו Len( "Hello World" ).

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

ניתן להרחבה

יוצרים יכולים ליצור את הרכיבים והפונקציות שלהם באמצעות Power Fx עצמו. מפתחים יכולים ליצור את הרכיבים והפונקציות שלהם על-ידי כתיבת JavaScript.

ידידותי למפתחים

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

התפתחות שפה

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

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

לדוגמא, הצגנו את הפונקציה ShowError להצגת כרזה עם שגיאות על רקע אדום.

הצג שגיאה.

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

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

פונקציית Notify מחליפה את ShowError.

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

אין ערך לא מוגדר

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

סוגי נתונים
אופרטורים ומזהים
טבלאות
משתנים
לוגיקה חיונית
תמיכה גלובלית
דקדוק של ביטויים
דקדוק הנוסחאות של YAML
נוסחאות ביישומי בד ציור