Kongsi melalui


Jenis data objek tanpa jenis

objek tanpa jenis ialah jenis data yang Power Fx boleh memuatkan sebarang struktur data, kompleks atau mudah. Tidak boleh digunakan secara langsung dan memerlukan penukaran eksplisit ke jenis data. Medan dalam rekod dalam objek tanpa jenis boleh diakses menggunakan tatatanda titik, dan kewujudan medan hanya disahkan pada masa jalanan.

objek tanpa jenis ialah jenis pulangan pembekal tidak ditaip tertentu. Pada masa ini, hanya fungsi ParseJSON() memulangkan objek tanpa jenis.

Jenis Mudah

Nilai pemboleh ubah jenis objek tanpa jenis tidak boleh digunakan secara langsung. Anda sentiasa perlu menaip dengan betul menggunakan pengeluar jenis yang sepadan.

Contoh berikut menukar nilai pemboleh ubah objek tanpa jenis dinamakan UOValue.

Text(UOValue)
Value(UOValue)

Jadual berikut menyenaraikan jenis data dan fungsi yang berkaitan untuk menukar objek tanpa jenis kepada jenis data tersebut.

Jenis Data Function Description
Boolean Boolean() Apabila menukarobjek tanpa jenis kepada boolean, nilai asas perlu mewakili boolean atau jenis yang boleh ditukar secara automatik (seperti rentetan "benar").
Warna ColorValue() atau RGBA() Warna boleh diwakili dalam tatatanda takrifan warna Helaian Gaya Melata (CSS) sebagai rentetan, atau sebagai komponen RGBA individu. Objek tanpa jenis boleh ditukar secara langsung daripada rentetan takrifan warna Helaian Gaya Melata (CSS) menggunakan fungsi ColorValue(), atau daripada nombor RGBA individu ke dalam warna menggunakan fungsi RGBA().
Mata Wang, Nombor Nilai() Apabila menukarobjek tanpa jenis kepada nombor, nilai asas perlu mewakili nombor atau jenis yang boleh ditukar secara automatik (seperti rentetan "123.456").
Tarikh, Tarikh/Masa, Masa DateValue(), TimeValue() atau DateTimeValue() Tarikh, masa dan tarikh/masa boleh ditukar secara langsung daripada objek tanpa jenis kepada jenis masing-masing, apabila diwakili dalam format ISO 8601. Format lain mestilah ditukarkan kepada teks terlebih dahulu menggunakan fungsi Text(), kemudian diserahkan ke dalam fungsi DateValue(), TimeValue() atau DateTimeValue() yang secara lalai akan menggunakan bahasa tetapan pengguna semasa untuk menafsirkan tarikh dan masa.
GUID GUID() objek tanpa jenis boleh ditukar terus kepada GUID jika objek asas mewakili GUID atau jika ia mewakili rentetan.
HiperPautan, Imej, Media Teks() Jenis data ini ialah jenis data teks dan boleh ditukar kepada teks dan kemudian digunakan dalam Power Fx.
Pilihan, Dua Pilihan Suis() atau Jika() Pilihan dan dua pilihan dibentangkan sebagai rentetan setempat dalam Power Fx. Pilihan disokong oleh nombor dan dua pilihan sebagai boolean. Tidak ada penukaran langsung daripada boolean, nombor atau rentetan kepada pilihan atau dua pilihan, tetapi fungsi Switch() atau If() boleh digunakan pada nilai boolean, teks atau nombor dengan betul untuk menguntukkan nilai pilihan atau dua pilihan .
Rekod t/b Tiada penukaran langsung daripada objek tanpa jenis kepada struktur rekod, tetapi medan individu boleh didapatkan semula daripada objek tanpa jenis untuk mencipta rekod baharu.
Rujukan Rekod t/b Rujukan rekod adalah unik untuk sumber data dan tidak mempunyai perwakilan yang bermakna dalam objek tanpa jenis.
Table Table()dan ForAll() Objek tanpa jenis boleh mewakili tatasusunan yang boleh ditukar menjadi jadual. Objek ini boleh jadi tatasusunan rekod atau tatasusunan nilai yang merupakan jadual lajur tunggal secara berkesan. ForAll() boleh digunakan untuk mencipta jadual dengan rekod yang ditaip sepenuhnya. Semak contoh selanjutnya untuk mendapatkan maklumat lanjut.
Teks Teks() Teks boleh ditukar secara langsung. Jika objek tanpa jenis mewakili nombor, anda perlu menukar objek tanpa jenis ke nombor pertama menggunakan Value() sebelum menukar kepada teks.

Jenis Rekod

Anda boleh mencapai medan pada pemboleh ubah mewakili rekod objek tanpa jenis menggunakan tatatanda titik biasa yang digunakan untuk rekod. Namun, kewujudan medan tidak akan disahkan sehingga masa jalanan. Hasilnya, terdapat juga tiada intellisense tersedia. Jika medan tidak wujud atau mempunyai nilai nol, mencapainya akan menyebabkan dalam nilai Blank().

Setiap medan pada rekod juga jenis objek tanpa jenis dan perlu ditaip dengan betul. Medan boleh menjadi rekod tanpa jenis bagi jenis mudah. Sekiranya merupakan rekod, anda boleh merantai tatatanda titik. Jika sebarang medan dalam rantai tidak wujud, Blank() dikembalikan.

Contoh berikut menggunakan medan daripada pemboleh ubah objek tanpa jenis dinamakan UORecord.

Text(UORecord.StringField)
Value(UORecord.Field.ChildField)

Jika nama medan terdiri daripada nama pengecam tidak sah, contohnya apabila nama medan bermula dengan nombor atau mengandungi aksara tidak sah seperti tanda hubung, anda boleh meletakkan nama medan dalam sebut harga tunggal:

untyped.'01'
untyped.'my-field'

Tatasusunan

Pemboleh ubah objek tanpa jenis boleh mengandungi tatasusunan. Walaupun tatasususan mungkin sama ada tatasusunan rekod atau tatasusunan jenis mudah, menukar tatasususan objek tanpa jenis dengan jadual menggunakan fungsi Table() akan sentiasa menyebabkan jadual lajur tunggal daripada objek tanpa jenis. Fungsi seperti ForAll() dan Index() tidak memerlukan anda untuk mencipta Table() terlebih dahulu dan oleh sebab itu tidak memerlukan anda untuk menggunakan medan lajur tunggal Value,

Sebagai contoh, untuk mendapatkan nombor kedua dalam tatasusunan objek tanpa jenis mengandungi nilai nombor ( [1, 2, 3] ), formula berikut boleh digunakan untuk mendapatkan baris kedua dalam jadual dan tukar lajur ke nombor:

Value( Index( UOArray, 2 ) )

Jika objek tanpa jenis telah ditukar kepada Table() terlebih dahulu, baris kedua dalam jadual lajur tunggal keputusan ialah lajur Value yang mengandungi objek tanpa jenis:

Value( Index( Table( UOArray ), 2 ).Value )

Untuk tatasusunan rekod yang mempunyai lajur teks yang dipanggil Field, logik yang sama diguna pakai. Objek tanpa jenis boleh diakses secara langsung, atau jika menggunakan fungsi Table() akan menyebabkan jadual lajur tunggal objek tanpa jenis.

Lajur Field boleh diakses secara langsung daripada objek tanpa jenis yang dikembalikan oleh fungsi Index().

Text( Index( UORecordArray, 2 ).Field )

Apabila menggunakan fungsi Table(), dapatkan lajur Value lajur tunggal terlebih dahulu untuk mendapatkan objek tanpa jenis, kemudian capai lajur Field:

Text( Index( Table( UORecordArray ), 2 ).Value.Field )

Untuk menukar tatasusunan rekod kepada jadual yang ditaip, anda boleh menggunakan fungsi orAll() dan menukar setiap medan individu.

ForAll( UORecordArray, { FirstField: Value(ThisRecord.FirstField), SecondField: Text(ThisRecord.SecondField) } )

Jika objek tanpa jenis ditukar kepada jadual terlebih dahulu, sekali lagi, jadual lajur tunggal objek tanpa jenis yang terhasil akan mengkehendaki anda untuk menggunakan lajur Value untuk mendapatkan medan.

ForAll( Table(UORecordArray), { FirstField: Value(ThisRecord.Value.FirstField), SecondField: Text(ThisRecord.Value.SecondField) } )