Κοινή χρήση μέσω


Power FxΓραμματική τύπου YAML

Σημείωμα

Το Microsoft Power Fx είναι το νέο όνομα για τη γλώσσα τύπου για εφαρμογές καμβά. Αυτά τα άρθρα είναι σε εξέλιξη καθώς εξάγουμε τη γλώσσα από εφαρμογές καμβά, την ενοποιουμε με άλλα προϊόντα Microsoft Power Platform και την κάνουμε διαθέσιμη ως ανοιχτό κώδικα. Ξεκινήστε με την Επισκόπηση του Microsoft Power Fx για μια εισαγωγή στη γλώσσα.

Το Microsoft Power Fx έχει μια καλά εδραιωμένη γραμματική για εκφράσει βάσει του Excel. Ωστόσο, όταν χρησιμοποιείται στο Power Apps και σε άλλους κεντρικούς υπολογιστές όπου το περιβάλλον εργασίας χρήστη παρέχει τη σύνδεση ονόματος προς παράσταση για έναν τύπο, δεν υπάρχει τυπικός τρόπος επεξεργασίας της σύνδεσης τύπου ως κειμένου.

Επιλέξαμε ως γλώσσα για αυτήν τη σύνδεση το πρότυπο του κλάδου YAML. Υπάρχει ήδη μεγάλος αριθμός επιμελητών, εργαλείων και βιβλιοθηκών για εργασία με το 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: Component-Type [ .Component-Template ] : ( 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-Template είναι ένα προαιρετικό προσδιοριστικό για στοιχεία που έχουν διαφορετικά πρότυπα, όπως η Συλλογή. Δεν έχουν όλα τα στοιχεία πρότυπα.

Εάν το Όνομα περιέχει ειδικούς χαρακτήρες και δεν διαθέτει μονά εισαγωγικά, θα πρέπει να γίνει διαφυγλη ολόκληρης της φράσης στην αριστερή πλευρά της άνω και κάτω τελείας. Αυτό μπορεί να γίνει με έναν από τους εξής τρόπους:

  • Χρησιμοποιήστε μονά εισαγωγικά για να συσκευάσετε ολόκληρη την αριστερή πλευρά, γεγονός που προϋποθέτει τη χρήση των υπαρχόντων μονών εισαγωγικών δύο φορές:
    '''A name with a space'' As Gallery':
    
  • Χρησιμοποιήστε διπλά εισαγωγικά για να συσκευάσετε ολόκληρη την αριστερή πλευρά, αλλά βεβαιωθείτε ότι δεν υπάρχουν διπλά εισαγωγικά στο όνομα:
    "'A name with a space' As Gallery":
    

Ορισμός στοιχείου

Ομοίως, τα στοιχεία καθορίζονται με τη δημιουργία μιας παρουσίας ενός από τους υποστηριζόμενους βασικούς τύπους. Δεν είναι δυνατό να υπάρχουν απευθείας οι τύποι βάσης. Εντός ενός ορισμού αντικειμένου, οι ιδιότητες μπορούν να προστεθούν σε αυτά που παρέχει ο βασικός τύπος.

Οι υποστηριζόμενοι βασικοί τύποι είναι: CanvasComponent

Ορισμός απλής ιδιότητας

Τα στοιχεία χρησιμοποιούν ιδιότητες για την επικοινωνία με την εφαρμογή στην οποία φιλοξενούνται.

Όνομα: ( έκφραση μίας γραμμής ή έκφραση πολλών γραμμών)

Ο τύπος της φόρμουλας χρησιμοποιείται μέσω του τύπου της παράστασης.

Για τις ιδιότητες εισόδου, η παράσταση παρέχει την προεπιλογή που εισάγεται στην εφαρμογή όταν το στοιχείο έχει παρουσία. Ο δημιουργός μπορεί να τροποποιήσει αυτήν την παράσταση όπως κρίνει καλύτερο, αλλά δεν μπορεί να αλλάξει τον τύπο.

Για τις ιδιότητες εξόδου, η παράσταση παρέχει τον υπολογισμό που πρέπει να εκτελεστεί. Ο δημιουργός δεν μπορεί να τροποποιήσει αυτήν την παράσταση, είναι ενσωματωμένη στο στοιχείο.

Αυτήν τη στιγμή, όλες οι ιδιότητες είναι μόνο ροή δεδομένων και δεν μπορούν να περιέχουν ανεπιθύμητες ενέργειες.

Αυτήν τη στιγμή, τα πρόσθετα μετα-δεδομένα σχετικά με την ιδιότητα δεν καθορίζονται εδώ, αλλά αντίθετα καθορίζονται στα άλλα αρχεία του αρχείου .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 επιτρέπει την επαναχρησιμοποιήσιμη του χάρτη με το ίδιο όνομα, με τον τελευταίο να παρακάμπτει αθόρυβα τους προηγούμενους ορισμούς. Επειδή αυτό μπορεί να προκαλέσει σύγχυση σε έναν δημιουργό χαμηλού κώδικα και μπορεί να οδηγήσει σε απώλεια ενός τύπου ιδιοτήτων, εμφανίζεται ένα σφάλμα όταν παρουσιάζεται δύο φορές το ίδιο όνομα.