Aracılığıyla paylaş


Power FxYAML formülü dil bilgisi

Not

Microsoft Power Fx, tuval uygulamaları için formül dilinin yeni adıdır. Dili tuval uygulamalarından ayırdığımız, Microsoft Power Platform ürünlerine entegre ettiğimiz ve açık kaynak olarak sunduğumuz bu süreçte bu makaleler geliştirilmeye devam eder. Dilin tanıtımı için Microsoft Power Fx genel bakış makalesiyle başlayın.

Microsoft Power Fx, Excel tabanlı ifadeler için iyi yapılandırılmış bir dil bilgisi içerir. Bununla birlikte Power Apps'te ve kullanıcı arabiriminin formül için ad-ifade bağlamasını sağladığı diğer ana bilgisayarlarda kullanıldığında, formül bağlamasını metin olarak düzenlemenin standart bir yolu yoktur.

Bu bağlama için dilimiz olarak sektör standardı olan YAML dilini seçtik. YAML ile çalışmayla ilgili çok sayıda düzenleyici, araç ve kitaplık bulunuyor. Bu makalede, YAML'deki formülleri nasıl temsil ettiğimiz açıklanmaktadır.

Bu aşamada, YAML'nin yalnızca kısıtlı bir alt kümesini destekliyoruz. Yalnızca bu makalede açıklanan yapılar desteklenmektedir.

Tuval uygulamasını tanımlayan her unsur burada temsil edilmemiştir; ek bilgiler aracın ürettiği ve tükettiği diğer dosyalar üzerinden akar.

Öndeki eşittir işareti

Öncelikle, tüm ifadelerin başında eşittir işareti = bulunur:

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

= işaretini bu şekilde kullanmamızın üç nedeni bulunur:

  • Bu, ifadeyi hücreye bağlamak için Excel'in kullandığı baştaki = kullanımıyla tutarlıdır.
  • Formül dilinin söz diziminden etkili bir şekilde kaçış sağladığı için YAML, bunu ayrıştırmaya çalışmaz. Normalde YAML, text: 1:00 ifadesini dakika ve saniye kabul ederek sayıya dönüştürür. = işareti eklendiğinde YAML, örtük yazım kurallarını kullanmaz ve formüller zarar görmez. = işaretini kullanmak çoğu durumu kapsasa da her durumu kapsamaz ve özel durumlar, aşağıda Tek satırlı formüller bölümünde açıklanmıştır.
  • Gelecekte, Excel'in yaptığı gibi hem formülleri (= ile başlar) hem de formül dışı ifadeleri (= içermez) destekleyebileceğiz. Bu işlemi, Microsoft Power Platform kaynak dosyalarında YAML ve YAML dışı dosyalarda yapabiliriz. Bir formülün desteklendiği her yerde baştaki = işareti, Power Apps formülü ifadesini statik skaler değerden ayırır.

Tek satırlı formüller

Tek satırlı formüller aşağıdaki biçimde yazılır:

İsim:SPACE=İfadesi

İki nokta ve eşittir işareti arasındaki boşuk, YAML uyumluluğu için gereklidir. Eşittir işareti, YAML'nin ifadeyi normal yorumlamasını etkileyerek satırın geri kalanının Power Fx olarak yorumlanmasına olanak tanır. Örneğin:

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

Diyez işareti # ve iki nokta üst üste :, tırnak içindeki metin dizesinde veya tanımlayıcı adında olsa bile tek satırlı formüllerin hiçbir yerinde kullanılamaz. Diyez işareti veya iki nokta üst üste işareti kullanmak için formülün çok satırlı bir formül olarak ifade edilmesi gerekir. Diyez işareti, YAML'de açıklama olarak yorumlanır ve iki nokta üst üste işareti YAML'de yeni ad eşlemesi olarak yorumlanır. Tek satırlı bir açıklamaya açıklama eklemek için // ile başlayan Power Fx satır açıklamasını kullanın.

Tek tırnak işaretleri ve C benzeri ters eğik çizgiler ile normal YAML kaçışlarının kullanılması desteklenmez; bunun yerine çok satırlı formül kullanın. Bunu tutarlık ve Power Apps Studio'daki formül çubuğu ile YAML kaynak dosyaları arasında kopyala/yapıştır işlemlerini kolaylaştırmak için yaparız.

İzin verilen adlar ve ifade yapısıyla ilgili ayrıntılar için tuval uygulamalarının işleçleri ve tanımlayıcıları belgesini inceleyin.

Çok satırlı formüller

Formüller, YAML'nin öbek skaler göstergelerini kullanarak birden çok satıra yayılabilir.

İsim:SPACE ( | veya |+ veya |- ) =İfade Satırıİfade Satırı ...

Bloğun bir parçası olan tüm satırlar, ilk satır düzeyinden en az bir boşluk olacak şekilde girintilenmelidir.

Örneğin:

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

>+ dahil olmak üzere içeri aktarma sırasında tüm YAML çok satırlı skaler gösterim biçimlerini kabul ederiz. Ancak, boşluğun doğru şekilde korunmasını sağlamak için yalnızca |, |+ veya |- üretilir.

Bileşen örneği

Bileşenler, YAML nesne gösterimi kullanılarak örneklendirilir. Nesnenin türü, sol taraftaki YAML etiketinin bir parçası olarak As işleciyle kurulur. Kapsayıcı denetimlerinde nesneler iç içe olabilir.

İsim:AsBileşen Türü [ .Bileşen-Şablonu ] : ( Tek Satırlı Formül veya Çok Satırlı Formül veya Nesne örneği ) ...

Bloğun bir parçası olan tüm satırlar, ilk satır düzeyinden en az bir boşluk olacak şekilde girintilenmelidir.

Örneğin:

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
            ) 

Bileşen Türü herhangi bir tuval bileşeni veya denetimi olabilir. Number gibi temel türler desteklenmez.

Component-Template , Galeri gibi farklı şablonlara sahip bileşenler için isteğe bağlı bir belirticidir. Tüm bileşenlerin şablonu olmaz.

Ad özel karakterler içeriyorsa ve tek tırnak işaretleri arasındaysa iki nokta üst üste işaretinin solundaki tüm deyime kaçış dizisi uygulanması gerekir. Bu aşağıdaki iki yöntemden biri kullanılarak gerçekleştirilebilir:

  • Mevcut tek tırnak işaretlerinin çift tırnak yapılmasını gerektirerek sol taraftaki kısmın tamamını içine almak için tek tırnak kullanın:
    '''A name with a space'' As Gallery':
    
  • Sol taraftaki kısmın tamamını içine almak için çift tırnak kullanın ancak adda çift tırnak olmamasına dikkat edin:
    "'A name with a space' As Gallery":
    

Bileşen tanımı

Benzer şekilde bileşenler, desteklenen temel türlerden birinin kopyası oluşturularak tanımlanır. Temel türler doğrudan örneklenemez. Nesne tanımı içinde, temel türün sağladıklarına özellikler eklenebilir.

Desteklenen temel türler şunlardır: CanvasComponent

Basit özellik tanımı

Bileşenler, içinde barındırıldıkları uygulamayla iletişim kurmak için özellikleri kullanır.

name: ( tek satırlı ifade veya çok satırlı ifade )

Formülün türü, ifadenin türüyle belirtilir.

Giriş özellikleri için ifade, bileşen örneklendiğinde uygulamaya eklenecek varsayılanı sağlar. Oluşturucu, bu ifadeyi uygun gördüğü şekilde değiştirebilir ancak türü değiştiremez.

Çıkış özellikleri için ifade, gerçekleştirilecek hesaplamayı sağlar. Oluşturucu bu ifadeyi değiştiremez; ifade bileşen tarafından kapsanır.

Bu aşamada, tüm özellikler yalnızca veri akışıdır ve yan etkiler içeremez.

Bu aşamada, özellik hakkında ek meta veriler burada tanımlanmamıştır ancak bunun yerine .msapp dosyasının diğer dosyalarında (ör. özellik açıklaması) tanımlanmıştır.

Örneğin:

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 uyumluluğu

YAML açıklamaları

YAML'nin # sayı simgesiyle ayrılan satır açıklamaları kaynak biçimin herhangi bir yerinde korunmaz. Bunun yerine bir formül içinde satır açıklamalarını ayırmak için // karakterlerini veya açıklamaları engellemek için /* ve */ karakterlerini kullanın. Daha fazla bilgi: Açıklamalar

Yaygın görülen tuzaklarla ilgili hatalar

Power Fx ile YAML dil bilgilerinin uyumsuz olduğu veya kullanıcı için kafa karıştırıcı olabileceği birkaç nokta vardır. Bu gibi durumlarda bir hata oluşturulur.

Aşağıdaki örneği inceleyin:

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

# sayı işareti, Excel'in metin dizesi (çift tırnak içinde) olarak kabul edeceği bir şekilde eklenmiş olsa da YAML tarafından açıklama olarak kabul edilir. Karışıklık oluşmasını önlemek için bu durumda, içeri aktarma sırasında bir hata oluşturulur. Bunun yerine YAML çok satır biçimi kullanılabilir.

record değeri durumunda YAML, a: ve b: öğelerini bir başka ad eşleme bağlaması kabul eder. YAML, aynı ad eşlemesinin yeniden kullanılmasına izin verir ve son eşleme önceki tanımları sessizce geçersiz kılar. Bu, az kodla çalışan bir oluşturucu için kafa karıştırıcı olabilir ve özellik formülünün kaybına neden olabilir; aynı ad iki kez görüldüğünde bir hata oluşturulur.