Bagikan melalui


Tipe data objek yang tidak diketik

Objek tidak berjenis adalah jenis data di Power Fx yang dapat menampung struktur data apa pun, kompleks atau sederhana. Objek tidak berjenis tidak dapat digunakan secara langsung dan memerlukan konversi eksplisit ke suatu jenis data. Bidang dalam catatan dalam objek tidak berjenis dapat diakses menggunakan notasi titik dan keberadaan bidang hanya diverifikasi saat runtime.

Objek tidak berjenis adalah jenis hasil dari penyedia tidak berjenis tertentu. Saat ini, hanya fungsi ParseJSON() yang menampilkan objek tidak berjenis.

Jenis Sederhana

Nilai variabel jenis objek tidak berjenis tidak dapat digunakan secara langsung. Anda harus selalu menulisnya dengan benar menggunakan konstruktor jenis yang sesuai.

Contoh berikut mengonversi nilai variabel objek tidak berjenis bernama UOValue.

Text(UOValue)
Value(UOValue)

Tabel berikut mencantumkan jenis data dan fungsi terkait untuk mengonversi objek tidak berjenis ke jenis data tersebut.

Jenis Data Function Description
Boolean Boolean() Saat mengonversi objek yang tidak diketik menjadi boolean, nilai yang mendasarinya harus mewakili boolean atau tipe yang dapat dikonversi secara otomatis (seperti string "true").
Warna ColorValue() atau RGBA() Warna dapat direpresentasikan dalam notasi definisi warna Cascading Style Sheet (CSS) sebagai string, atau sebagai komponen RGBA individual. Objek tidak berjenis dapat langsung dikonversi dari string definisi warna Cascading Style Sheet (CSS) menggunakan fungsi ColorValue(), atau dari angka RGBA individual menjadi warna menggunakan fungsi RGBA().
Mata uang, Angka Value() Saat mengonversi objek yang tidak diketik menjadi angka, nilai yang mendasarinya harus mewakili angka atau tipe yang dapat dikonversi secara otomatis (seperti string "123.456").
Tanggal, TanggalWaktu, Waktu DateValue(), TimeValue() or DateTimeValue() Tanggal, waktu, dan tanggalwaktu dapat langsung dikonversi dari objek tidak berjenis ke jenisnya masing-masing, jika direpresentasikan dalam format ISO 8601. Format lain harus terlebih dahulu dikonversi menjadi teks menggunakan fungsi Text() lalu diteruskan ke fungsi DateValue(), TimeValue() or DateTimeValue() yang secara default akan menggunakan bahasa pengaturan pengguna saat ini untuk menginterpretasikan tanggal dan waktu.
GUID GUID() Objek yang tidak diketik dapat langsung dikonversi ke GUID jika objek yang mendasarinya mewakili GUID, atau jika mewakili string.
HyperLink, Gambar, Media Text() Jenis data ini adalah jenis data teks dan dapat dikonversi ke teks lalu digunakan di Power Fx.
Pilihan, Dua Opsi Switch() atau If() Pilihan dan dua opsi direpresentasikan sebagai string yang dilokalisasi di Power Fx. Pilihan didukung oleh angka dan dua opsi sebagai booleans. Tidak ada konversi langsung dari boolean, angka, atau string ke pilihan atau dua opsi, tetapi fungsi Switch() atau If() dapat digunakan di nilai boolean, teks, atau angka untuk menetapkan dengan benar nilai pilihan atau dua opsi.
Rekaman t/a Tidak ada konversi langsung dari objek tidak berjenis ke struktur catatan, tetapi setiap bidang dapat diambil dari objek tidak berjenis untuk membuat catatan baru.
Referensi Catatan t/a Referensi catatan bersifat unik untuk sumber data dan tidak memiliki representasi yang berarti di objek tidak berjenis.
Table Table() dan ForAll() Objek tidak berjenis dapat merepresentasikan sebuah array, yang dapat dikonversikan menjadi sebuah tabel. Objek ini dapat berupa array catatan, atau array nilai yang secara efektif merupakan tabel kolom tunggal. ForAll() dapat digunakan untuk membuat tabel dengan catatan yang sepenuhnya berjenis. Tinjau contoh lebih lanjut di artikel ini untuk informasi selengkapnya.
SMS Text() Teks dapat dikonversi secara langsung. Jika objek tidak berjenis merepresentasikan angka, Anda harus mengonversi objek tidak berjenis ke angka terlebih dahulu menggunakan Value() sebelum mengonversinya menjadi teks.

Jenis Data

Anda dapat mengakses bidang pada variabel yang merepresentasikan catatan objek tidak berjenis menggunakan notasi titik biasa yang digunakan untuk catatan. Namun, keberadaan kolom tersebut tidak akan diverifikasi hingga runtime. Sehingga, intellisense juga tidak tersedia. Jika bidang tidak ada atau memiliki nilai dasar null, nilai Blank() akan dihasilkan saat mengaksesnya.

Setiap bidang pada catatan juga berjenis objek tidak berjenis dan harus ditulis dengan benar. Bidang dapat berupa catatan tidak berjenis dari jenis sederhana. Jika itu adalah catatan, Anda dapat merangkai notasi titik. Jika ada bidang dalam rantai yang tidak ada, Blank() ditampilkan.

Contoh berikut menggunakan bidang dari variabel objek tidak berjenis bernama UORecord.

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

Jika nama bidang terdiri dari nama pengidentifikasi yang tidak valid, misalnya saat nama bidang dimulai dengan angka atau berisi karakter yang tidak valid seperti tanda hubung, Anda dapat memasukkan nama bidang dalam tanda kutip tunggal:

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

Array

Variabel objek tidak berjenis dapat berisi sebuah array. Meskipun array tersebut dapat berupa array catatan atau array jenis sederhana, mengonversi array objek tidak berjenis menjadi tabel menggunakan fungsi Table() akan selalu menghasilkan tabel kolom tunggal objek tidak berjenis. Fungsi seperti ForAll() dan Index() tidak mengharuskan Anda untuk terlebih dahulu membuat Table(), sehingga tidak mengharuskan Anda untuk menggunakan bidang Value kolom tunggal,

Misalnya, untuk mendapatkan angka kedua dalam array objek tidak berjenis yang berisikan nilai angka ( [1, 2, 3] ), rumus berikut dapat digunakan untuk mengambil baris kedua dalam tabel dan mengonversi kolom menjadi angka:

Value( Index( UOArray, 2 ) )

Jika objek tidak berjenis dikonversi menjadi Table() terlebih dahulu, baris kedua dalam tabel kolom tunggal yang dihasilkan adalah kolom Value yang berisi objek tidak berjenis:

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

Untuk array catatan yang memiliki kolom teks bernama Field, logika yang sama berlaku. Objek tidak berjenis dapat diakses secara langsung, atau jika menggunakan fungsi Table() akan menghasilkan tabel kolom tunggal objek tidak berjenis.

Kolom Field dapat diakses secara langsung dari objek tidak berjenis yang ditampilkan oleh fungsi Index().

Text( Index( UORecordArray, 2 ).Field )

Saat menggunakan fungsi Table(), ambil kolom Value terlebih dahulu untuk mendapatkan objek tidak berjenis, lalu akses kolom Field:

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

Untuk mengonversi array catatan ke tabel berjenis, Anda dapat menggunakan fungsi ForAll() dan mengkonversi setiap bidang individu.

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

Jika objek tidak berjenis terlebih dahulu dikonversi menjadi tabel, sekali lagi, tabel kolom tunggal objek tidak berjenis yang dihasilkan akan mengharuskan Anda untuk menggunakan kolom Value untuk mendapatkan bidang.

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