Kongsi melalui


Power FxTatabahasa formula YAML

Nota

Microsoft Power Fx ialah nama baharu untuk bahasa formula bagi aplikasi kanvas. Artikel ini ialah kerja yang sedang berjalan kerana kami mengekstrak bahasa daripada aplikasi kanvas, mengintegrasikan ia dengan produk Microsoft Power Platform yang lain dan menjadikan ia tersedia sebagai sumber terbuka. Mulakan dengan Gambaran keseluruhan Microsoft Power Fx untuk pengenalan kepada bahasa.

Microsoft Power Fx mempunyai tatabahasa yang mantap untuk ungkapan berdasarkan Excel. Walau bagaimanapun, apabila digunakan dalam Power Apps dan hos lain di mana UI menyediakan pengikatan nama ke ungkapan untuk formula, tidak ada cara standard untuk mengedit pengikatan formula sebagai teks.

Kami telah memilih standard industri YAML sebagai bahasa kami untuk pengikatan ini. Sudah pun terdapat sebilangan besar penyunting, alat, dan perpustakaan untuk bekerja dengan YAML. Artikel ini menerangkan cara kita mewakili formula dalam YAML.

Pada masa ini, kami menyokong hanya subset terhad YAML. Hanya binaan yang diterangkan dalam artikel ini disokong.

Tidak semua yang mentakrifkan aplikasi kanvas diwakili di sini; maklumat tambahan melalui fail lain yang dihasilkan dan digunakan oleh alat.

Tanda sama dengan di hadapan

Pertama sekali, semua ungkapan mesti bermula dengan tanda sama dengan di hadapan =:

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

Kami menggunakan = dalam cara ini untuk tiga sebab:

  • Ia konsisten dengan Excel, yang menggunakan = di hadapan untuk mengikat ungkapan pada sel.
  • Ia mengelak formula sintaks bahasa dengan berkesan agar YAML tidak cuba untuk menghuraikannya. Biasanya, YAML akan menganggap text: 1:00 sebagai minit dan saat, menukarkannya kepada nombor. Dengan menyisipkan =, YAML tidak akan menggunakan peraturan menaip tersirat dan formulanya tidak akan disentuh. Menggunakan = meliputi kebanyakan kes, tetapi tidak semua dan pengecualian tersebut diterangkan dalam bahagian berikut, Formula satu baris.
  • Pada masa akan datang, kami akan menyokong kedua-dua formula (bermula dengan =) dan bukan formula (tiada =) dalam fail yang sama, sama seperti Excel, kita boleh melakukan perkara ini dalam fail YAML dan bukan YAML sama seperti merentas fail sumber Microsoft Power Platform. Formula disokong di mana sahaja, = di depan membezakan ungkapan formula Power Apps dari nilai skala statik.

Formula satu baris

Formula satu baris ditulis dalam borang:

Nama:SPACE=Ungkapan

Ruang antara kolon dan tanda sama dengan diperlukan untuk mematuhi YAML. Tanda sama dengan mengganggu tafsiran normal ungkapan YAML, membolehkan semua baris ditafsirkan sebagai Power Fx. Contohnya:

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

Tanda nombor # dan kolon : tidak dibenarkan di mana-mana dalam formula satu baris, walaupun jika ia berada dalam rentetan teks yang dipetik atau nama pengecam. Untuk menggunakan tanda nombor atau kolon, anda mesti menyatakan formula sebagai formula berbilang baris. Tanda nombor ditafsirkan sebagai komen dalam YAML dan kolon ditafsirkan sebagai peta nama baharu dalam YAML. Untuk menambahkan komen pada komen satu baris, gunakan komen baris Power Fx bermula dengan //.

Melepasi menggunakan YAML biasa dengan petikan tunggal dan garis miring balik seperti huruf C tidak disokong; gunakan formula berbilang baris sebagai ganti. Ini adalah untuk konsisten dan untuk memudahkan potong/tampal antara bar formula dalam Power Apps Studio dan fail sumber YAML.

Lihat dokumentasi pengendali dan pengecam aplikasi kanvas untuk butiran pada nama yang dibenarkan dan struktur ungkapan.

Formula berbilang baris

Formula boleh merangkumi berbilang baris dengan menggunakan penunjuk skala blok YAML:

Nama:SPACE ( | atau |+ atau |- ) =Baris UngkapanBaris Ungkapan ...

Semua garisan yang merupakan sebahagian daripada blok mesti diindenkan sekurang-kurangnya satu ruang dalam daripada aras garisan pertama.

Contohnya:

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

Semua bentuk notasi skalar berbilang baris YAML diterima pada import, contohnya termasuk >+. Walau bagaimanapun, untuk memastikan bahawa ruang putih dikekalkan dengan betul, hanya |, |+ atau |- dihasilkan.

Tika komponen

Komponen disebut dengan menggunakan notasi objek YAML. Jenis objek yang diwujudkan dengan pengendali As sebagai sebahagian daripada tag YAML sebelah kiri. Untuk kawalan bekas, objek boleh bersarang.

NamaAsJenis Komponen [ .Templat Komponen ] : ( Formula Bari Tunggal atau Formula Berbilang Baris atau Tika Objek ) ...

Semua garisan yang merupakan sebahagian daripada blok mesti diindenkan sekurang-kurangnya satu ruang dalam daripada aras garisan pertama.

Contohnya:

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
            ) 

Jenis Komponen boleh menjadi mana-mana komponen atau kawalan kanvas. Jenis asas, seperti Nombor tidak disokong.

Templat Komponen ialah penentu pilihan untuk komponen yang mempunyai templat yang berbeza, seperti Galeri. Tidak semua komponen mempunyai templat.

Jika Nama mengandungi aksara khas dan ditutup dengan tanda petikan tunggal, keseluruhan frasa di sebelah kiri kolon perlu diselaraskan. Ini boleh dibuat dalam salah satu cara berikut:

  • Gunakan tanda petikan tunggal untuk menutup keseluruhan frasa sebelah kiri, yang memerlukan tanda petikan tunggal sedia ada digunakan dua kali:
    '''A name with a space'' As Gallery':
    
  • Gunakan tanda petikan berganda untuk menutup keseluruhan frasa sebelah kiri, tetapi pastikan tiada tanda petikan berganda dalam nama:
    "'A name with a space' As Gallery":
    

Definisi komponen

Begitu juga, komponen ditakrifkan dengan mewujudkan contoh bagi salah satu jenis asas yang disokong. Jenis asas tidak boleh dinyatakan secara langsung. Dalam definisi objek, sifat boleh ditambah kepada apa yang disediakan oleh jenis asas.

Jenis data asas disokong adalah: CanvasComponent

Takrifan sifat yang ringkas

Komponen menggunakan sifat untuk berkomunikasi dengan aplikasi tempat ia dihoskan.

Nama: ( Ungkapan Baris Tunggal atau Ungkapan Berbilang Baris )

Jenis formula tersirat oleh jenis ungkapan.

Untuk sifat input, ungkapan memberikan lalai untuk dimasukkan ke dalam aplikasi apabila komponen itu dijadikan contoh. Pembuat boleh mengubah suai ungkapan ini mengikut kesesuaian, tetapi tidak boleh mengubah jenisnya.

Untuk sifat output, ungkapan ini menyediakan pengiraan yang akan dilakukan. Pembuat tidak boleh mengubah suai ungkapan ini, ia terkandung dalam komponen.

Pada masa ini, semua sifat ialah aliran data sahaja dan tidak boleh mengandungi kesan sampingan.

Pada masa ini, metadata tambahan tentang sifat itu tidak ditakrifkan di sini tetapi sebaliknya ditakrifkan dalam fail lain bagi fail .msapp, contohnya perihalan sifat itu.

Contohnya:

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

Keserasian YAML

Komen YAML

Komen baris YAML yang terbatas oleh tanda nombor # tidak dipelihara di mana-mana dalam format sumber. Sebaliknya, dalam formula, komen baris batasan dengan aksara // atau menyekat komen dengan /* dan */. Maklumat lanjut: Komen

Ralat untuk perangkap biasa

Terdapat beberapa tempat yang tatabahasa Power Fx dan YAML tidak serasi atau mungkin mengelirukan pengguna. Dalam kes ini, ralat dibuang.

Contohnya, dalam perkara berikut.

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

tanda nombor # dianggap sebagai komen oleh YAML, walaupun ia terbenam dalam perkara yang Excel menganggap rentetan teks (ditutup oleh tanda petikan berganda). Untuk mengelakkan kekeliruan, kes ini akan membuang ralat semasa import. Borang berbilang baris YAML boleh digunakan sebagai ganti.

Dalam kes nilai untuk record, YAML menganggap a: dan b: menjadi satu lagi pengikatan peta nama. YAML membolehkan peta nama yang sama digunakan semula, dengan yang terakhir mengatasi definisi sebelumnya secara senyap. Disebabkan ini boleh mengelirukan bagi pembuat kod rendah dan boleh mengakibatkan kehilangan formula sifat, ralat dibuang jika nama yang sama ditemukan sebanyak dua kali.