Nilai
Nilai adalah data yang dihasilkan dengan mengevaluasi ekspresi. Bagian ini menjelaskan jenis nilai dalam bahasa M. Setiap jenis nilai dikaitkan dengan sintaksis harfiah, sekumpulan nilai yang jenisnya, sekumpulan operator yang ditentukan atas kumpulan nilai tersebut, dan jenis intrinsik yang bertuliskan nilai yang baru dibangun.
Kind | Harfiah |
---|---|
Null | null |
Logis | true false |
Number | 0 1 -1 1.5 2.3e-5 |
Waktu | #time(09,15,00) |
Tanggal | #date(2013,02,26) |
DateTime | #datetime(2013,02,26, 09,15,00) |
DateTimeZone | #datetimezone(2013,02,26, 09,15,00, 09,00) |
Durasi | #duration(0,1,30,0) |
Teks | "hello" |
Biner | #binary("AQID") |
Daftar | {1, 2, 3} |
Rekaman | [ A = 1, B = 2 ] |
Table | #table({"X","Y"},{{0,1},{1,0}}) |
Fungsi | (x) => x + 1 |
Jenis | type { number } type table [ A = any, B = text ] |
Bagian berikut mencakup setiap jenis nilai secara rinci. Jenis dan jenis askripsi didefinisikan secara resmi dalam Jenis. Nilai fungsi didefinisikan dalam Functions. Bagian berikut mencantumkan operator yang ditentukan untuk setiap jenis nilai dan memberikan contoh. Definisi lengkap semantik operator mengikuti operator.
Null
Nilai null digunakan untuk mewakili tidak adanya nilai, atau nilai status yang tidak ditentukan atau tidak diketahui. Nilai null ditulis menggunakan literal null
. Operator berikut didefinisikan untuk nilai null:
Operator | Hasil |
---|---|
x > y |
Lebih besar dari |
x >= y |
Lebih besar dari atau sama dengan |
x < y |
Kurang dari |
x <= y |
Kurang dari atau sama dengan |
x = y |
Equal |
x <> y |
Tidak sama dengan |
x ?? y |
Coalesce |
Jenis null
asli nilai adalah jenis null
intrinsik .
Logika
Nilai logis digunakan untuk operasi Boolean memiliki nilai true atau false. Nilai logis ditulis menggunakan literal true
dan false
. Operator berikut didefinisikan untuk nilai logis:
Operator | Hasil |
---|---|
x > y |
Lebih besar dari |
x >= y |
Lebih besar dari atau sama dengan |
x < y |
Kurang dari |
x <= y |
Kurang dari atau sama dengan |
x = y |
Equal |
x <> y |
Tidak sama dengan |
x or y |
LOGIS BERSYAR ATAU |
x ?? y |
Coalesce |
x and y |
LOGIS BERSYAR DAN |
not x |
LOGIS NOT |
Jenis asli dari kedua nilai logis (true
dan false
) adalah jenis logical
intrinsik .
Number
Nilai angka digunakan untuk operasi numerik dan aritmatika. Berikut ini adalah contoh jumlah literal:
3.14 // Fractional number
-1.5 // Fractional number
1.0e3 // Fractional number with exponent
123 // Whole number
1e3 // Whole number with exponent
0xff // Whole number in hex (255)
Angka diwakili dengan setidaknya presisi Double (tetapi dapat mempertahankan lebih banyak presisi). Representasi Ganda sejalan dengan standar presisi ganda IEEE 64-bit untuk aritmatika titik float biner yang ditentukan dalam [IEEE 754-2008]. (Representasi ganda memiliki perkiraan rentang dinamis dari 5,0 x 10324 hingga 1,7 x 10308 dengan presisi 15-16 digit.)
Nilai khusus berikut ini juga dianggap sebagai nilai angka :
Nol positif dan nol negatif. Dalam kebanyakan situasi, nol positif dan nol negatif berperilaku identik sebagai nilai nol sederhana, tetapi operasi tertentu membedakan antara keduanya.
Tak terbatas positif (
#infinity
) dan tak terbatas negatif (-#infinity
). Infinities diproduksi oleh operasi seperti membabungkan angka bukan nol dengan nol. Misalnya,1.0 / 0.0
menghasilkan tak terbatas positif, dan-1.0 / 0.0
menghasilkan tak terbatas negatif.Nilai Bukan Angka (
#nan
), sering disingkat NaN. NaN diproduksi oleh operasi floating-point yang tidak valid, seperti membalikkan nol dengan nol.
Operasi matematika biner dilakukan menggunakan Presisi. Presisi menentukan domain tempat operand dibulatkan dan domain tempat operasi dilakukan. Dengan tidak adanya presisi yang ditentukan secara eksplisit, operasi tersebut dilakukan menggunakan Presisi Ganda.
Jika hasil operasi matematika terlalu kecil untuk format tujuan, hasil operasi menjadi nol positif atau nol negatif.
Jika hasil operasi matematika terlalu besar untuk format tujuan, hasil operasi menjadi tak terbatas positif atau tidak terbatas negatif.
Jika operasi matematika tidak valid, hasil operasi menjadi NaN.
Jika satu atau kedua operan dari operasi floating-point adalah NaN, hasil operasi menjadi NaN.
Operator berikut didefinisikan untuk nilai angka:
Operator | Hasil |
---|---|
x > y |
Lebih besar dari |
x >= y |
Lebih besar dari atau sama dengan |
x < y |
Kurang dari |
x <= y |
Kurang dari atau sama dengan |
x = y |
Equal |
x <> y |
Tidak sama dengan |
x + y |
Jumlah total |
x - y |
Perbedaan |
x * y |
Produk |
x / y |
Hasil bagi |
x ?? y |
Coalesce |
+x |
Nilai tambah unary |
-x |
Negasi |
Jenis asli nilai angka adalah jenis number
intrinsik .
Waktu
Nilai waktu menyimpan representasi buram dari waktu dalam sehari. Waktu dikodekan sebagai jumlah kutu sejak tengah malam, yang menghitung jumlah kutu 100 nanodetik yang telah berlalu pada jam 24 jam. Jumlah maksimum kutu sejak tengah malam sesuai dengan 23:59:59.9999999 jam.
Meskipun tidak ada sintaks harfiah untuk waktu, beberapa fungsi pustaka standar disediakan untuk membangunnya. Waktu juga dapat dibangun menggunakan fungsi #time
intrinsik :
#time(hour, minute, second)
Berikut ini harus ditangguhkan atau kesalahan dengan kode Expression.Error
alasan dimunculkan:
0 ≤ jam ≤ 24
0 ≤ menit ≤ 59
0 ≤ detik ≤ 59
Selain itu, jika jam = 24, maka menit dan detik harus nol.
Operator berikut didefinisikan untuk nilai waktu:
Operator | Hasil |
---|---|
x = y |
Equal |
x <> y |
Tidak sama dengan |
x >= y |
Lebih besar dari atau sama dengan |
x > y |
Lebih besar dari |
x < y |
Kurang dari |
x <= y |
Kurang dari atau sama dengan |
x ?? y |
Coalesce |
Operator berikut mengizinkan satu atau kedua operand mereka menjadi tanggal:
Operator | Operand Kiri | Operand Kanan | Makna |
---|---|---|---|
x + y |
time |
duration |
Tanggal offset menurut durasi |
x + y |
duration |
time |
Tanggal offset menurut durasi |
x - y |
time |
duration |
Tanggal offset dengan durasi yang dinegasikan |
x - y |
time |
time |
Durasi antar tanggal |
x & y |
date |
time |
Tanggalwaktu gabungan |
Jenis nilai waktu asli adalah jenis time
intrinsik .
Tanggal
Nilai tanggal menyimpan representasi buram dari hari tertentu. Tanggal dikodekan sebagai beberapa hari sejak zaman, mulai dari 1 Januari 0001 Era Umum pada kalender Gregorian. Jumlah maksimum hari sejak zaman 3652058, sesuai dengan 31 Desember 9999.
Meskipun tidak ada sintaks harfiah untuk tanggal, beberapa fungsi pustaka standar disediakan untuk membangunnya. Tanggal juga dapat dibangun menggunakan fungsi #date
intrinsik :
#date(year, month, day)
Berikut ini harus ditangguhkan atau kesalahan dengan kode Expression.Error
alasan dimunculkan:
1 ≤ tahun ≤ 9999
1 ≤ bulan ≤ 12
1 ≤ hari ≤ 31
Selain itu, hari harus berlaku untuk bulan dan tahun yang dipilih.
Operator berikut didefinisikan untuk nilai tanggal:
Operator | Hasil |
---|---|
x = y |
Equal |
x <> y |
Tidak sama dengan |
x >= y |
Lebih besar dari atau sama dengan |
x > y |
Lebih besar dari |
x < y |
Kurang dari |
x <= y |
Kurang dari atau sama dengan |
x ?? y |
Coalesce |
Operator berikut mengizinkan satu atau kedua operand mereka menjadi tanggal:
Operator | Operand Kiri | Operand Kanan | Makna |
---|---|---|---|
x + y |
date |
duration |
Tanggal offset menurut durasi |
x + y |
duration |
date |
Tanggal offset menurut durasi |
x - y |
date |
duration |
Tanggal offset dengan durasi yang dinegasikan |
x - y |
date |
date |
Durasi antar tanggal |
x & y |
date |
time |
Tanggalwaktu gabungan |
Jenis asli nilai tanggal adalah jenis date
intrinsik .
DateTime
Nilai tanggalwaktu berisi tanggal dan waktu.
Meskipun tidak ada sintaks harfiah untuk tanggalwaktu, beberapa fungsi pustaka standar disediakan untuk membangunnya. Tanggalwaktu juga dapat dibangun menggunakan fungsi #datetime
intrinsik :
#datetime(year, month, day, hour, minute, second)
Berikut ini harus ditangguhkan atau kesalahan dengan kode alasan Expression.Error muncul: 1 ≤ tahun ≤ 9999
1 ≤ bulan ≤ 12
1 ≤ hari ≤ 31
0 ≤ jam ≤ 23
0 ≤ menit ≤ 59
0 ≤ detik ≤ 59
Selain itu, hari harus berlaku untuk bulan dan tahun yang dipilih.
Operator berikut didefinisikan untuk nilai tanggalwaktu:
Operator | Hasil |
---|---|
x = y |
Equal |
x <> y |
Tidak sama dengan |
x >= y |
Lebih besar dari atau sama dengan |
x > y |
Lebih besar dari |
x < y |
Kurang dari |
x <= y |
Kurang dari atau sama dengan |
x ?? y |
Coalesce |
Operator berikut mengizinkan satu atau kedua operand mereka menjadi tanggalwaktu:
Operator | Operand Kiri | Operand Kanan | Makna |
---|---|---|---|
x + y |
datetime |
duration |
Offset tanggalwaktu menurut durasi |
x + y |
duration |
datetime |
Offset tanggalwaktu menurut durasi |
x - y |
datetime |
duration |
Offset tanggalwaktu dengan durasi yang dinegasikan |
x - y |
datetime |
datetime |
Durasi antara tanggalwaktu |
Jenis asli nilai tanggalwaktu adalah jenis datetime
intrinsik .
Zona Tanggal Waktu
Nilai zona tanggalwaktu berisi tanggalwaktu dan zona waktu. Zona waktu dikodekan sebagai sejumlah menit offset dari UTC, yang menghitung jumlah menit bagian waktu dari tanggalwaktu harus diimbangi dari Universal Coordinated Time (UTC). Jumlah minimum offset menit dari UTC adalah -840, mewakili offset UTC -14:00, atau empat belas jam lebih awal dari UTC. Jumlah maksimum offset menit dari UTC adalah 840, sesuai dengan offset UTC 14:00.
Meskipun tidak ada sintaks harfiah untuk zona tanggalwaktu, beberapa fungsi pustaka standar disediakan untuk membangunnya. Datetimezones juga dapat dibangun menggunakan fungsi #datetimezone
intrinsik :
#datetimezone(
year, month, day,
hour, minute, second,
offset-hours, offset-minutes)
Berikut ini harus ditangguhkan atau kesalahan dengan kode Expression.Error
alasan dimunculkan:
1 ≤ tahun ≤ 9999
1 ≤ bulan ≤ 12
1 ≤ hari ≤ 31
0 ≤ jam ≤ 23
0 ≤ menit ≤ 59
0 ≤ detik ≤ 59
-14 ≤ jam offset ≤ 14
-59 ≤ offset-minutes ≤ 59
Selain itu, hari harus berlaku untuk bulan dan tahun yang dipilih dan, jika jam offset = 14, maka offset-minutes <= 0 dan, jika offset-hours = -14, maka offset-minutes >= 0.
Operator berikut didefinisikan untuk nilai zona tanggalwaktu:
Operator | Hasil |
---|---|
x = y |
Equal |
x <> y |
Tidak sama dengan |
x >= y |
Lebih besar dari atau sama dengan |
x > y |
Lebih besar dari |
x < y |
Kurang dari |
x <= y |
Kurang dari atau sama dengan |
x ?? y |
Coalesce |
Operator berikut mengizinkan satu atau kedua operand mereka menjadi zona tanggalwaktu:
Operator | Operand Kiri | Operand Kanan | Makna |
---|---|---|---|
x + y |
datetimezone |
duration |
Offset zona tanggalwaktu menurut durasi |
x + y |
duration |
datetimezone |
Offset zona tanggalwaktu menurut durasi |
x - y |
datetimezone |
duration |
Offset zona tanggalwaktu dengan durasi yang dinegasikan |
x - y |
datetimezone |
datetimezone |
Durasi antara zona tanggalwaktu |
Jenis asli nilai datetimezone adalah jenis datetimezone
intrinsik .
Durasi
Nilai durasi menyimpan representasi buram dari jarak antara dua titik pada garis waktu yang diukur 100 tanda nanodetik. Besarnya durasi dapat berupa positif atau negatif, dengan nilai positif yang menunjukkan kemajuan maju dalam waktu dan nilai negatif yang menunjukkan kemajuan mundur dalam waktu. Nilai minimum yang dapat disimpan dalam durasi adalah -9.223.372.036.854.775.808 tick, atau 10.675.199 hari 2 jam 48 menit 05,4775808 detik ke belakang dalam waktu. Nilai maksimum yang dapat disimpan dalam durasi adalah 9.223.372.036.854.775.807 tick, atau 10.675.199 hari 2 jam 48 menit 05,4775807 detik maju tepat waktu.
Meskipun tidak ada sintaks harfiah untuk durasi, beberapa fungsi pustaka standar disediakan untuk membangunnya. Durasi juga dapat dibangun menggunakan fungsi #duration
intrinsik :
#duration(0, 0, 0, 5.5) // 5.5 seconds
#duration(0, 0, 0, -5.5) // -5.5 seconds
#duration(0, 0, 5, 30) // 5.5 minutes
#duration(0, 0, 5, -30) // 4.5 minutes
#duration(0, 24, 0, 0) // 1 day
#duration(1, 0, 0, 0) // 1 day
Operator berikut didefinisikan pada nilai durasi:
Operator | Hasil |
---|---|
x = y |
Equal |
x <> y |
Tidak sama dengan |
x >= y |
Lebih besar dari atau sama dengan |
x > y |
Lebih besar dari |
x < y |
Kurang dari |
x <= y |
Kurang dari atau sama dengan |
x ?? y |
Coalesce |
Selain itu, operator berikut memungkinkan satu atau kedua operand mereka menjadi nilai durasi:
Operator | Operand Kiri | Operand Kanan | Makna |
---|---|---|---|
x + y |
datetime |
duration |
Offset tanggalwaktu menurut durasi |
x + y |
duration |
datetime |
Offset tanggalwaktu menurut durasi |
x + y |
duration |
duration |
Jumlah durasi |
x - y |
datetime |
duration |
Offset tanggalwaktu dengan durasi yang dinegasikan |
x - y |
datetime |
datetime |
Durasi antara tanggalwaktu |
x - y |
duration |
duration |
Perbedaan durasi |
x * y |
duration |
number |
Durasi N kali |
x * y |
number |
duration |
Durasi N kali |
x / y |
duration |
number |
Pecahan durasi |
Jenis nilai durasi asli adalah jenis duration
intrinsik .
Teks
Nilai teks mewakili urutan karakter Unicode. Nilai teks memiliki bentuk harfiah yang sesuai dengan tata bahasa berikut:
_text harfiah:
"
opt karakter teks-literal "
karakter teks-literal:
teks-literal-character text-literal-charactersopt
text-literal-character:
karakter teks tunggal
karakter-escape-sequence
double-quote-escape-sequence
karakter teks tunggal:
Karakter apa pun kecuali "
(U+0022
) atau #
(U+0023
) diikuti oleh (
(U+0028
)
double-quote-escape-sequence:
""
(U+0022
, U+0022
)
Berikut ini adalah contoh nilai teks :
"ABC" // the text value ABC
Operator berikut didefinisikan pada nilai teks :
Operator | Hasil |
---|---|
x = y |
Equal |
x <> y |
Tidak sama dengan |
x >= y |
Lebih besar dari atau sama dengan |
x > y |
Lebih besar dari |
x < y |
Kurang dari |
x <= y |
Kurang dari atau sama dengan |
x & y |
Rangkaian |
x ?? y |
Coalesce |
Jenis asli nilai teks adalah jenis text
intrinsik .
Biner
Nilai biner mewakili urutan byte.
Meskipun tidak ada sintaks harfiah untuk nilai biner, beberapa fungsi pustaka standar disediakan untuk membangunnya. Nilai biner juga dapat dibangun menggunakan fungsi #binary
intrinsik .
Contoh berikut membuat nilai biner dari daftar byte:
#binary( {0x00, 0x01, 0x02, 0x03} )
Operator berikut didefinisikan pada nilai biner :
Operator | Hasil |
---|---|
x = y |
Equal |
x <> y |
Tidak sama dengan |
x >= y |
Lebih besar dari atau sama dengan |
x > y |
Lebih besar dari |
x < y |
Kurang dari |
x <= y |
Kurang dari atau sama dengan |
x ?? y |
Coalesce |
Jenis asli nilai biner adalah biner jenis intrinsik.
List
Nilai daftar adalah nilai yang menghasilkan urutan nilai saat dijumlahkan. Nilai yang dihasilkan oleh daftar dapat berisi segala jenis nilai, termasuk daftar. Daftar dapat dibangun menggunakan sintaks inisialisasi, sebagai berikut:
list-expression:
{ item-listopt }
daftar item:
item
,
daftar item
item:
expression
ekspresi ekspresi..
Berikut ini adalah contoh ekspresi daftar yang menentukan daftar dengan tiga nilai teks: "A"
, "B"
, dan "C"
.
{"A", "B", "C"}
Nilainya "A"
adalah item pertama dalam daftar, dan nilainya "C"
adalah item terakhir dalam daftar.
- Item daftar tidak dievaluasi hingga diakses.
- Meskipun nilai daftar yang dibangun menggunakan sintaks daftar akan menghasilkan item dalam urutan muncul dalam daftar item, secara umum, daftar yang dikembalikan dari fungsi pustaka dapat menghasilkan set yang berbeda atau jumlah nilai yang berbeda setiap kali dijumlahkan.
Untuk menyertakan urutan bilangan buletin dalam daftar, a..b
formulir dapat digunakan:
{ 1, 5..9, 11 } // { 1, 5, 6, 7, 8, 9, 11 }
Jumlah item dalam daftar, yang dikenal sebagai jumlah daftar, dapat ditentukan menggunakan List.Count
fungsi .
List.Count({true, false}) // 2
List.Count({}) // 0
Daftar mungkin secara efektif memiliki jumlah item yang tak terbatas; List.Count
untuk daftar tersebut tidak terdefinisi dan dapat menimbulkan kesalahan atau tidak dihentikan.
Jika daftar tidak berisi item, daftar tersebut disebut daftar kosong. Daftar kosong ditulis sebagai:
{} // empty list
Operator berikut didefinisikan untuk daftar:
Operator | Hasil |
---|---|
x = y |
Equal |
x <> y |
Tidak sama dengan |
x & y |
Concatenate |
x ?? y |
Coalesce |
Contohnya:
{1, 2} & {3, 4, 5} // {1, 2, 3, 4, 5}
{1, 2} = {1, 2} // true
{2, 1} <> {1, 2} // true
Jenis asli nilai daftar adalah jenis list
intrinsik , yang menentukan jenis item .any
Rekaman
Nilai rekaman adalah urutan bidang yang diurutkan. Bidang terdiri dari nama bidang, yang merupakan nilai teks yang secara unik mengidentifikasi bidang dalam rekaman, dan nilai bidang. Nilai bidang bisa berupa nilai apa pun, termasuk rekaman. Rekaman dapat dibangun menggunakan sintaks inisialisasi, sebagai berikut:
ekspresi rekaman:
[
opt daftarbidang ]
daftar bidang:
bidang
,
daftar bidang
kebun:
ekspresi nama=
bidang
nama bidang:
pengidentifikasi umum
pengidentifikasi kutipan
Contoh berikut membuat rekaman dengan bidang bernama x
dengan nilai 1
, dan bidang bernama y
dengan nilai 2
.
[ x = 1, y = 2 ]
Contoh berikut membuat rekaman dengan a
bidang bernama dengan nilai rekaman berlapis. Rekaman berlapis memiliki bidang bernama b
dengan nilai 2
.
[ a = [ b = 2 ] ]
Berikut ini berlaku saat mengevaluasi ekspresi rekaman:
Ekspresi yang ditetapkan untuk setiap nama bidang digunakan untuk menentukan nilai bidang terkait.
Jika ekspresi yang ditetapkan ke nama bidang menghasilkan nilai saat dievaluasi, maka itu menjadi nilai bidang rekaman yang dihasilkan.
Jika ekspresi yang ditetapkan ke nama bidang menimbulkan kesalahan saat dievaluasi, maka fakta bahwa kesalahan dimunculkan direkam dengan bidang bersama dengan nilai kesalahan yang dimunculkan. Akses berikutnya ke bidang tersebut akan menyebabkan kesalahan muncul kembali dengan nilai kesalahan yang direkam.
Ekspresi dievaluasi di lingkungan seperti lingkungan induk hanya dengan variabel yang digabungkan dalam yang sesuai dengan nilai setiap bidang rekaman, kecuali yang sedang diinisialisasi.
Nilai dalam rekaman tidak dievaluasi hingga bidang terkait diakses.
Nilai dalam rekaman dievaluasi paling banyak sekali.
Hasil ekspresi adalah nilai rekaman dengan catatan metadata kosong.
Urutan bidang dalam rekaman ditentukan oleh urutan yang muncul dalam ekspresi penginisialisasi rekaman.
Setiap nama bidang yang ditentukan harus unik dalam rekaman, atau merupakan kesalahan. Nama dibandingkan menggunakan perbandingan ordinal.
[ x = 1, x = 2 ] // error: field names must be unique
[ X = 1, x = 2 ] // OK
Rekaman tanpa bidang disebut catatan kosong, dan ditulis sebagai berikut:
[] // empty record
Meskipun urutan bidang rekaman tidak signifikan saat mengakses bidang atau membandingkan dua rekaman, itu signifikan dalam konteks lain seperti ketika bidang rekaman dijumlahkan.
Dua rekaman yang sama menghasilkan hasil yang berbeda ketika bidang diperoleh:
Record.FieldNames([ x = 1, y = 2 ]) // [ "x", "y" ]
Record.FieldNames([ y = 1, x = 2 ]) // [ "y", "x" ]
Jumlah bidang dalam rekaman dapat ditentukan menggunakan Record.FieldCount
fungsi . Contohnya:
Record.FieldCount([ x = 1, y = 2 }) // 2
Record.FieldCount([]) // 0
Selain menggunakan sintaks [ ]
inisialisasi rekaman , rekaman dapat dibangun dari daftar nilai, dan daftar nama bidang atau jenis rekaman. Contohnya:
Record.FromList({1, 2}, {"a", "b"})
Hal di atas setara dengan:
[ a = 1, b = 2 ]
Operator berikut didefinisikan untuk nilai rekaman:
Operator | Hasil |
---|---|
x = y |
Equal |
x <> y |
Tidak sama dengan |
x & y |
Penggabungan |
x ?? y |
Coalesce |
Contoh berikut mengilustrasikan operator di atas. Perhatikan bahwa penggabungan rekaman menggunakan bidang dari operand kanan untuk mengambil alih bidang dari operand kiri, jika ada tumpang tindih dalam nama bidang.
[ a = 1, b = 2 ] & [ c = 3 ] // [ a = 1, b = 2, c = 3 ]
[ a = 1, b = 2 ] & [ a = 3 ] // [ a = 3, b = 2 ]
[ a = 1, b = 2 ] = [ b = 2, a = 1 ] // true
[ a = 1, b = 2, c = 3 ] <> [ a = 1, b = 2 ] // true
Jenis asli nilai rekaman adalah jenis record
intrinsik , yang menentukan daftar bidang kosong terbuka.
Tabel
Nilai tabel adalah urutan baris yang diurutkan. Baris adalah urutan nilai kolom yang diurutkan. Jenis tabel menentukan panjang semua baris dalam tabel, nama kolom tabel, jenis kolom tabel, dan struktur kunci tabel (jika ada).
Meskipun tidak ada sintaks harfiah untuk tabel, beberapa fungsi pustaka standar disediakan untuk membangunnya. Tabel juga dapat dibangun menggunakan fungsi #table
intrinsik .
Contoh berikut membuat tabel dari daftar nama kolom dan daftar baris. Tabel yang dihasilkan akan berisi dua kolom dan type any
tiga baris.
#table({"x", "x^2"}, {{1,1}, {2,4}, {3,9}})
#table
juga dapat digunakan untuk menentukan jenis tabel lengkap:
#table(
type table [Digit = number, Name = text],
{{1,"one"}, {2,"two"}, {3,"three"}}
)
Di sini nilai tabel baru memiliki tipe tabel yang menentukan nama kolom dan tipe kolom.
Operator berikut didefinisikan untuk nilai tabel:
Operator | Hasil |
---|---|
x = y |
Equal |
x <> y |
Tidak sama dengan |
x & y |
Rangkaian |
x ?? y |
Coalesce |
Perangkaian tabel meratakan kolom seperti bernama dan mengisi null
kolom yang hanya muncul di salah satu tabel operand. Contoh berikut mengilustrasikan perangkaian tabel:
#table({"A","B"}, {{1,2}})
& #table({"B","C"}, {{3,4}})
A | B | C |
---|---|---|
1 |
2 |
null |
null |
3 |
4 |
Jenis asli nilai tabel adalah jenis tabel kustom (berasal dari jenis table
intrinsik ) yang mencantumkan nama kolom, menentukan semua jenis kolom menjadi apa pun, dan tidak memiliki kunci. (Buka Jenis tabel untuk detail tentang jenis tabel.)
Fungsi
Nilai fungsi adalah nilai yang memetakan sekumpulan argumen ke satu nilai. Detail nilai fungsi dijelaskan dalam Functions.
Jenis
Nilai jenis adalah nilai yang mengklasifikasikan nilai lain. Detail nilai jenis dijelaskan dalam Jenis.