Türü belirtilmemiş nesne veri türü
Türü belirsiz nesne, Power Fx içinde karmaşık veya basit herhangi bir veri yapısını tutabilen bir veri türüdür. Doğrudan kullanılamaz ve veri türüne açıkça dönüştürme yapılmasını gerektirir. Türü belirsiz nesne içinde kayıtlarındaki alanlara nokta gösterimi kullanarak erişilebilir ve alanların varlığı yalnızca çalışma zamanında doğrulanır.
Türü belirsiz nesne, türü belirsiz bazı sağlayıcıların döndürme türüdür. Şu anda yalnızca ParseJSON() işlevi türü belirsiz nesneyi döndürür.
Basit Türler
Türü belirsiz nesne türünün bir değişkenin değeri doğrudan kullanılamaz. İlgili tür oluşturucu kullanılarak her zaman doğru şekilde yazmanız gerekir.
Aşağıdaki örnekler, UOValue
adlı türü belirsiz nesne değişkeninin değerini dönüştürür.
Text(UOValue)
Value(UOValue)
Aşağıdaki tabloda, veri türleri ve türü belirsiz nesneyi bu veri türüne dönüştürmek için ilgili işlevler listelenir.
Veri Türü | İşlev | Tanım |
---|---|---|
Boolean | Boolean() | Türü belirtilmemiş nesneyiboole'ye dönüştürürken, temel değerin bir boolean veya otomatik olarak dönüştürülebilen bir türü (örneğin "true" dizesi) temsil etmesi gerekir. |
Color | ColorValue() veya RGBA() | Renkler Basamaklı Biçim Tablosu (CSS) renk tanımı gösteriminde dize olarak veya ayrı RGBA bileşenleri olarak gösterilebilir. Türü belirsiz nesne doğrudan Basamaklı Biçim Tablosu (CSS) renk tanımı dizesinden ColorValue() işlevini kullanarak veya RGBA() işlevi kullanılarak tek tek RGBA sayılarından renge dönüştürülebilir. |
Para Birimi, Sayı | Value() | Türü belirtilmemiş nesneyisayı'ya dönüştürürken, temel değerin bir boolean veya otomatik olarak dönüştürülebilen bir türü (örneğin "123.456" dizesi) temsil etmesi gerekir. |
Tarih, Tarih Saat, Saat | DateValue(), TimeValue() veya DateTimeValue() | Tarih, saat ve tarih saat, ISO 8601 biçiminde temsil edildiğinde, türü belirsiz nesneden doğrudan ilgili türlerine dönüştürülebilir. Diğer işlevler için önce Text() işlevini kullanarak diğer formatları metne dönüştürün ve ardından varsayılan olarak geçerli kullanıcı ayarlarının dilini kullanacak olan DateValue(), TimeValue() veya DateTimeValue() işlevini kullanın. |
GUID | GUID() | Türü belirtilmemiş nesne, temel nesne bir GUID'yi temsil ediyorsa veya bir dizeyi temsil ediyorsa doğrudan GUID'ye dönüştürülebilir. |
HyperLink, Görüntü, Ortam | Text() | Bu veri türleri metin veri türleridir ve metne dönüştürülebilir ve ardından Power Fx uygulamasında kullanılabilir. |
Seçenek, İki Seçenek | Switch() veya If() | Seçimler ve iki seçenek, Power Fx içinde yerelleştirilmiş dizeler olarak sunulur. Seçimler bir sayı ve iki seçenek ile boole olarak yedeklenir. Boole, sayı veya dizeden bir seçeneğe veya iki seçeneğe doğrudan dönüştürme yoktur ancak Switch() veya If() işlevleri seçenek veya iki seçenek değerini doğru şekilde atamak için boole, metin veya sayı değerinde kullanılabilir. |
Kaydet | Yok | Türü belirsiz nesnedenkayıt yapısına doğrudan dönüşüm yoktur, ancak yeni bir kayıt oluşturmak için türü belirsiz nesneden ayrı alanlar alınabilir. |
Kayıt Başvurusu | Yok | Kayıt başvuruları, veri kaynaklarına özgüdür ve türü belirsiz nesnelerde anlamlı bir temsili yoktur. |
Table | Table() ve ForAll() | Türü belirsiz bir nesne bir tabloya dönüştürebilen bir diziyi temsil edebilir. Bu nesneler kayıt dizileri veya etkin bir şekilde tek sütunlu tablolar olan değer dizileri olabilir. ForAll() tam olarak türü belirtilmiş kayıtlara sahip bir tablo oluşturmak için kullanılabilir. Daha fazla bilgi için bu makalenin ilerleyen bölümlerindeki örnekleri inceleyin. |
Metin | Text() | Metin doğrudan dönüştürülebilir. Türü belirsiz bir nesne bir sayıyı gösteriyorsa türü belirsiz nesneyi metne dönüştürmeden önce Value() kullanarak sayıya dönüştürmeniz gerekir. |
Kayıt Türleri
Kayıtlar için kullanılan normal nokta gösterimini kullanarak türü belirsiz bir nesne kaydını temsil eden bir değişkende alanlara erişebilirsiniz. Ancak alanların varlığı çalışma zamanına kadar doğrulanmaz. Sonuç olarak, kullanılabilir bir intellisense de yoktur. Bir alan mevcut değilse veya temel bir nulldeğeri varsa bu alana erişim Blank() değeriyle sonuçlanır.
Kayıttaki her bir alan türü belirsiz nesne türündedir ve uygun şekilde türü belirtilmesi gerekir. Bu alan basit türde bir türü belirsiz kayıt olabilir. Bir kayıt olduğu durumda, nokta gösterimini zincirleyebilirsiniz. Zincirde herhangi bir alan yoksa Blank() döndürülür.
Aşağıdaki örnekler, UORecord
adlı türü belirsiz nesneden alanları kullanır.
Text(UORecord.StringField)
Value(UORecord.Field.ChildField)
Bir alan adı, geçersiz bir tanımlayıcı adından oluşuyorsa (örneğin alan adları bir sayıyla başladığında veya kısa çizgi gibi geçersiz karakterler içerdiğinde) alan adlarını tek tırnak işaretleri içine koyabilirsiniz:
untyped.'01'
untyped.'my-field'
Diziler
Türü belirsiz nesne değişkeni bir dizi içerebilir. Dizi, bir kayıt dizisi ya da basit türler dizisi olsa bile türü belirsiz nesne dizisini Table()işlevini kullanarak bir tabloya dönüştürmek, daima türü belirsiz nesnelerden oluşan tek sütunlu bir tabloyla sonuçlanır. ForAll() ve Index() gibi işlevler, önce bir Table() oluşturmanızı, dolayısıyla da tek sütunlu Value
alanı kullanmanızı gerektirmez,
Örneğin sayı değerlerini ( [1, 2, 3]
) içeren türü belirsiz bir nesne dizisindeki ikinci sayıyı almak için tablodaki ikinci sırayı almak ve sütunu bir sayıya dönüştürmek üzere aşağıdaki formül kullanılabilir:
Value( Index( UOArray, 2 ) )
Türü belirsiz nesne önce bir Table() olarak dönüştürüldüyse, elde edilen tek sütunlu tablodaki ikinci satır türü belirsiz nesneyi içeren bir Value
sütunudur:
Value( Index( Table( UOArray ), 2 ).Value )
Field
adlı bir metin sütunu olan kayıtlar dizisi için de aynı mantık geçerlidir. Türü belirsiz nesneye doğrudan erişilebilir. Table() işlevi kullanılıyorsa, tek sütunlu bir türü belirsiz nesne tablosu oluşturulur.
Field
sütununa Index() işlevi tarafından döndürülen türü belirsiz nesne üzerinden doğrudan erişilebilir.
Text( Index( UORecordArray, 2 ).Field )
Table() işlevini kullanıyorsanız, türü belirsiz nesneyi almak üzere tek sütunlu Value
sütununu alın, ardından Field
sütununa erişin:
Text( Index( Table( UORecordArray ), 2 ).Value.Field )
Kayıt dizisini türü belirli bir tabloya dönüştürmek için, ForAll() işlevini kullanabilir ve her alanı tek tek dönüştürebilirsiniz.
ForAll( UORecordArray, { FirstField: Value(ThisRecord.FirstField), SecondField: Text(ThisRecord.SecondField) } )
Türü belirsiz nesne önce bir tabloya dönüştürülürse, elde edilen tek sütunlu türü belirsiz nesne tablosu alanları almak için Value
sütununu kullanmanızı gerektirir.
ForAll( Table(UORecordArray), { FirstField: Value(ThisRecord.Value.FirstField), SecondField: Text(ThisRecord.Value.SecondField) } )