Değerler
Değer, bir ifade değerlendirilerek oluşturulan verilerdir. Bu bölümde M dilindeki değer türleri açıklanmaktadır. Her değer türü değişmez bir söz dizimi, bu türdeki bir değer kümesi, bu değer kümesi üzerinde tanımlanan bir işleç kümesi ve yeni yapılandırılmış değerlere atfedilen iç türle ilişkilendirilir.
Tip | Literal |
---|---|
Sıfır | null |
Mantıklı | true false |
Numara | 0 1 -1 1.5 2.3e-5 |
Time | #time(09,15,00) |
Date | #date(2013,02,26) |
Tarih Saat | #datetime(2013,02,26, 09,15,00) |
DateTimeZone | #datetimezone(2013,02,26, 09,15,00, 09,00) |
Süre | #duration(0,1,30,0) |
Metin | "hello" |
İkili | #binary("AQID") |
Liste | {1, 2, 3} |
Kayıt | [ A = 1, B = 2 ] |
Table | #table({"X","Y"},{{0,1},{1,0}}) |
İşlev | (x) => x + 1 |
Tür | type { number } type table [ A = any, B = text ] |
Aşağıdaki bölümlerde her bir değer türü ayrıntılı olarak ele alınıyor. Türler ve tür tanımlayıcısı, Türler'de resmi olarak tanımlanır. İşlev değerleri İşlevler'de tanımlanır. Aşağıdaki bölümlerde her değer türü için tanımlanan işleçler listelenmiştir ve örnekler verebilirsiniz. İşleç semantiğinin tam tanımı İşleçler bölümünde yer alır.
Null değer, bir değerin yokluğunu veya belirsiz veya bilinmeyen durum değerini göstermek için kullanılır. Null değer değişmez null
değeri kullanılarak yazılır. Null değerler için aşağıdaki işleçler tanımlanır:
Operatör | Sonuç |
---|---|
x > y |
Büyüktür |
x >= y |
Büyüktür veya eşittir |
x < y |
Küçüktür |
x <= y |
Küçüktür veya eşittir |
x = y |
Equal |
x <> y |
Not equal |
x ?? y |
Coalesce |
Değerin null
yerel türü, iç türüdür null
.
Boole işlemleri için mantıksal bir değer true veya false değerine sahiptir. Mantıksal değer, ve false
değişmez değerleri true
kullanılarak yazılır. Mantıksal değerler için aşağıdaki işleçler tanımlanır:
Operatör | Sonuç |
---|---|
x > y |
Büyüktür |
x >= y |
Büyüktür veya eşittir |
x < y |
Küçüktür |
x <= y |
Küçüktür veya eşittir |
x = y |
Equal |
x <> y |
Not equal |
x or y |
Koşullu mantıksal VEYA |
x ?? y |
Coalesce |
x and y |
Koşullu mantıksal AND |
not x |
Mantıksal DEĞİl |
Her iki mantıksal değerin (true
ve false
) yerel türü, iç türüdür logical
.
Sayı değeri , sayısal ve aritmetik işlemler için kullanılır. Aşağıda sayı değişmez değerleri örnekleri verilmiştir:
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)
Bir sayı, en azından Bir Çift duyarlığıyla temsil edilir (ancak daha fazla duyarlığı koruyabilir). Çift gösterimi, [IEEE 754-2008] içinde tanımlanan ikili kayan nokta aritmetiği için IEEE 64 bit çift duyarlık standardıyla uyumludur. (Çift gösterim, 5,0 x 10324 ile 1,7 x 10 308 arasında 15-16 basamak duyarlıklı yaklaşık dinamik aralığa sahiptir.)
Aşağıdaki özel değerler de sayı değerleri olarak kabul edilir:
Pozitif sıfır ve negatif sıfır. Çoğu durumda, pozitif sıfır ve negatif sıfır, basit sıfır değeriyle aynı şekilde davranır, ancak bazı işlemler ikisini birbirinden ayırır.
Pozitif sonsuzluk (
#infinity
) ve negatif sonsuzluk (-#infinity
). Sonsuzlar, sıfır olmayan bir sayıyı sıfıra bölme gibi işlemler tarafından üretilir. Örneğin,1.0 / 0.0
pozitif sonsuzluk verir ve-1.0 / 0.0
negatif sonsuzluk verir.Sayı Değil değeri ()
#nan
genellikle NaN olarak kısaltılır. NaN'ler, sıfırı sıfıra bölme gibi geçersiz kayan nokta işlemleriyle oluşturulur.
İkili matematik işlemleri Bir Duyarlık kullanılarak gerçekleştirilir. Duyarlık, işlenenlerin yuvarlandığı etki alanını ve işlemin gerçekleştirildiği etki alanını belirler. Açıkça belirtilen bir duyarlık olmadığında, bu tür işlemler Çift Duyarlık kullanılarak gerçekleştirilir.
Matematiksel işlemin sonucu hedef biçim için çok küçükse, işlemin sonucu pozitif sıfır veya negatif sıfır olur.
Matematiksel işlemin sonucu hedef biçim için çok büyükse, işlemin sonucu pozitif sonsuz veya negatif sonsuz olur.
Matematik işlemi geçersizse işlemin sonucu NaN olur.
Kayan nokta işleminin işlenenlerinden biri veya her ikisi de NaN ise, işlemin sonucu NaN olur.
Sayı değerleri için aşağıdaki işleçler tanımlanır:
Operatör | Sonuç |
---|---|
x > y |
Büyüktür |
x >= y |
Büyüktür veya eşittir |
x < y |
Küçüktür |
x <= y |
Küçüktür veya eşittir |
x = y |
Equal |
x <> y |
Not equal |
x + y |
Sum |
x - y |
Fark |
x * y |
Ürün |
x / y |
Bölüm |
x ?? y |
Coalesce |
+x |
Birli artı |
-x |
Olumsuzlama |
Sayı değerlerinin yerel türü, iç türüdür number
.
Saat değeri , günün saatinin opak bir gösterimini depolar. Bir zaman, gece yarısından bu yana geçen 100 nanosaniyelik değer sayısını sayan ve 24 saatlik bir saatte geçen değer sayısı olarak kodlanır. Gece yarısından bu yana en fazla kene sayısı 23:59:59,9999999 saate karşılık gelir.
Zaman için değişmez söz dizimi olmasa da, bunları oluşturmak için birkaç standart kitaplık işlevi sağlanır. Zaman, iç işlevi #time
kullanılarak da oluşturulabilir:
#time(hour, minute, second)
Aşağıdakiler tutulmalıdır veya neden koduyla Expression.Error
ilgili bir hata oluşur:
0 ≤ saat ≤ 24
0 ≤ dakika ≤ 59
0 ≤ saniye ≤ 59
Buna ek olarak, saat = 24 ise, dakika ve saniye sıfır olmalıdır.
Saat değerleri için aşağıdaki işleçler tanımlanır:
Operatör | Sonuç |
---|---|
x = y |
Equal |
x <> y |
Not equal |
x >= y |
Büyüktür veya eşittir |
x > y |
Büyüktür |
x < y |
Küçüktür |
x <= y |
Küçüktür veya eşittir |
x ?? y |
Coalesce |
Aşağıdaki işleçler işlenenlerinden birinin veya her ikisinin tarih olmasına izin verir:
Operatör | Sol İşlenen | Sağ İşlenen | Anlamı |
---|---|---|---|
x + y |
time |
duration |
Süreye göre tarih uzaklığı |
x + y |
duration |
time |
Süreye göre tarih uzaklığı |
x - y |
time |
duration |
Negatif süreye göre tarih uzaklığı |
x - y |
time |
time |
Tarihler arasındaki süre |
x & y |
date |
time |
Birleştirilmiş tarih saat |
Yerel saat değerleri türü, iç türüdür time
.
Tarih değeri , belirli bir günün opak gösterimini depolar. Tarih, Gregoryen takvimde 1 Ocak 0001 Ortak Dönemi'nden başlayarak, dönem sonundan bu yana geçen gün sayısı olarak kodlanır. 31 Aralık 9999'a karşılık gelen, dönem 3652058 en fazla gün sayısıdır.
Tarihler için değişmez söz dizimi olmasa da, bunları oluşturmak için birkaç standart kitaplık işlevi sağlanır. Tarihler, iç işlevi #date
kullanılarak da oluşturulabilir:
#date(year, month, day)
Aşağıdakiler tutulmalıdır veya neden koduyla Expression.Error
ilgili bir hata oluşur:
1 ≤ yıl ≤ 9999
1 ≤ ay ≤ 12
1 ≤ gün ≤ 31
Ayrıca, gün seçilen ay ve yıl için geçerli olmalıdır.
Tarih değerleri için aşağıdaki işleçler tanımlanır:
Operatör | Sonuç |
---|---|
x = y |
Equal |
x <> y |
Not equal |
x >= y |
Büyüktür veya eşittir |
x > y |
Büyüktür |
x < y |
Küçüktür |
x <= y |
Küçüktür veya eşittir |
x ?? y |
Coalesce |
Aşağıdaki işleçler işlenenlerinden birinin veya her ikisinin tarih olmasına izin verir:
Operatör | Sol İşlenen | Sağ İşlenen | Anlamı |
---|---|---|---|
x + y |
date |
duration |
Süreye göre tarih uzaklığı |
x + y |
duration |
date |
Süreye göre tarih uzaklığı |
x - y |
date |
duration |
Negatif süreye göre tarih uzaklığı |
x - y |
date |
date |
Tarihler arasındaki süre |
x & y |
date |
time |
Birleştirilmiş tarih saat |
Tarih değerlerinin yerel türü, iç türüdür date
.
Tarih saat değeri hem tarih hem de saat içerir.
Tarih saatlerinin değişmez söz dizimi olmasa da, bunları oluşturmak için birkaç standart kitaplık işlevi sağlanır. Datetimes, iç işlevi #datetime
kullanılarak da oluşturulabilir:
#datetime(year, month, day, hour, minute, second)
Aşağıdakiler tutulmalıdır veya Expression.Error neden koduyla bir hata oluşur: 1 ≤ yıl ≤ 9999
1 ≤ ay ≤ 12
1 ≤ gün ≤ 31
0 ≤ saat ≤ 23
0 ≤ dakika ≤ 59
0 ≤ saniye ≤ 59
Ayrıca, gün seçilen ay ve yıl için geçerli olmalıdır.
Tarih saat değerleri için aşağıdaki işleçler tanımlanır:
Operatör | Sonuç |
---|---|
x = y |
Equal |
x <> y |
Not equal |
x >= y |
Büyüktür veya eşittir |
x > y |
Büyüktür |
x < y |
Küçüktür |
x <= y |
Küçüktür veya eşittir |
x ?? y |
Coalesce |
Aşağıdaki işleçler işlenenlerinden birinin veya her ikisinin tarih saat olmasına izin verir:
Operatör | Sol İşlenen | Sağ İşlenen | Anlamı |
---|---|---|---|
x + y |
datetime |
duration |
Süreye göre tarih saat uzaklığı |
x + y |
duration |
datetime |
Süreye göre tarih saat uzaklığı |
x - y |
datetime |
duration |
Devredilen süreye göre tarih saat uzaklığı |
x - y |
datetime |
datetime |
Tarih saatleri arasındaki süre |
Tarih saat değerlerinin yerel türü, iç türüdür datetime
.
Datetimezone değeri bir datetime ve saat dilimi içerir. Saat dilimi, UTC'den dakika uzaklığı olarak kodlanır ve tarih saat bölümünün Evrensel Eşgüdümlü Saat'ten (UTC) uzak olması gereken dakika sayısını sayar. UTC'den en az dakika uzaklığı -840'tır ve utc uzaklığı -14:00 veya UTC'den on dört saat öncedir. UTC'den en fazla dakika uzaklığı 840'tır ve utc uzaklığı 14:00'a karşılık gelir.
Datetimezones için değişmez söz dizimi olmasa da, bunları oluşturmak için birkaç standart kitaplık işlevi sağlanır. Datetimezones da iç işlevi #datetimezone
kullanılarak oluşturulabilir:
#datetimezone(
year, month, day,
hour, minute, second,
offset-hours, offset-minutes)
Aşağıdakiler tutulmalıdır veya neden koduyla Expression.Error
ilgili bir hata oluşur:
1 ≤ yıl ≤ 9999
1 ≤ ay ≤ 12
1 ≤ gün ≤ 31
0 ≤ saat ≤ 23
0 ≤ dakika ≤ 59
0 ≤ saniye ≤ 59
-14 ≤ uzaklık-saat ≤ 14
-59 ≤ uzaklık-dakika ≤ 59
Buna ek olarak, gün seçilen ay ve yıl için geçerli olmalı ve offset-hours = 14 ise offset-minutes <= 0 ve offset-hours = -14 ise offset-minutes >= 0 olmalıdır.
Datetimezone değerleri için aşağıdaki işleçler tanımlanır:
Operatör | Sonuç |
---|---|
x = y |
Equal |
x <> y |
Not equal |
x >= y |
Büyüktür veya eşittir |
x > y |
Büyüktür |
x < y |
Küçüktür |
x <= y |
Küçüktür veya eşittir |
x ?? y |
Coalesce |
Aşağıdaki işleçler işlenenlerinden birinin veya her ikisinin datetimezone olmasına izin verir:
Operatör | Sol İşlenen | Sağ İşlenen | Anlamı |
---|---|---|---|
x + y |
datetimezone |
duration |
Süreye göre datetimezone uzaklığı |
x + y |
duration |
datetimezone |
Süreye göre datetimezone uzaklığı |
x - y |
datetimezone |
duration |
Devredilen süreye göre datetimezone uzaklığı |
x - y |
datetimezone |
datetimezone |
Datetimezones arasındaki süre |
Datetimezone değerlerinin yerel türü, iç türüdür datetimezone
.
Süre değeri, zaman çizelgesindeki iki nokta arasındaki mesafenin 100 nanosaniyelik değerlerle ölçülen opak bir gösterimini depolar. Bir sürenin büyüklüğü pozitif veya negatif olabilir; pozitif değerler zaman içinde ilerlemeyi ifade eder ve negatif değerler zamanda geriye doğru ilerlemeyi ifade eder. Bir süre içinde depolanabilecek en düşük değer-9.223.372.036.854.775.808 değer veya 10.675.199 gün 2 saat 48 dakika 05.4775808 saniye geriye doğru. Bir süre içinde depolanabilecek en yüksek değer 9.223.372.036.854.775.807 değer veya 10.675.199 gün 2 saat 48 dakika 05.4775807 saniye ileri doğrudır.
Süreler için değişmez söz dizimi olmasa da, bunları oluşturmak için birkaç standart kitaplık işlevi sağlanır. Süreler, iç işlevi #duration
kullanılarak da oluşturulabilir:
#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
Süre değerlerinde aşağıdaki işleçler tanımlanır:
Operatör | Sonuç |
---|---|
x = y |
Equal |
x <> y |
Not equal |
x >= y |
Büyüktür veya eşittir |
x > y |
Büyüktür |
x < y |
Küçüktür |
x <= y |
Küçüktür veya eşittir |
x ?? y |
Coalesce |
Ayrıca, aşağıdaki işleçler işlenenlerinden birinin veya her ikisinin de süre değeri olmasına izin verir:
Operatör | Sol İşlenen | Sağ İşlenen | Anlamı |
---|---|---|---|
x + y |
datetime |
duration |
Süreye göre tarih saat uzaklığı |
x + y |
duration |
datetime |
Süreye göre tarih saat uzaklığı |
x + y |
duration |
duration |
Sürelerin toplamı |
x - y |
datetime |
duration |
Devredilen süreye göre tarih saat uzaklığı |
x - y |
datetime |
datetime |
Tarih saatleri arasındaki süre |
x - y |
duration |
duration |
Süre farkı |
x * y |
duration |
number |
Sürenin N katı |
x * y |
number |
duration |
Sürenin N katı |
x / y |
duration |
number |
Sürenin kesri |
Süre değerlerinin yerel türü, iç türüdür duration
.
Metin değeri, Unicode karakter dizisini temsil eder. Metin değerleri, aşağıdaki dil bilgisi ile uyumlu bir değişmez değer biçimine sahiptir:
_text değişmez değeri:
"
text-literal-charactersopt "
text-literal-characters:
text-literal-character text-literal-charactersopt
metin-değişmez-karakteri:
tek metinli karakter
character-escape-sequence
çift tırnak-kaçış dizisi
tek metin karakterli:
() veya #
(U+0022
U+0023
) dışında "
ve ardından (
(U+0028
) gelen herhangi bir karakter
double-quote-escape-sequence:
""
(U+0022
, U+0022
)
Aşağıda bir metin değeri örneği verilmiştir:
"ABC" // the text value ABC
Aşağıdaki işleçler metin değerlerinde tanımlanır:
Operatör | Sonuç |
---|---|
x = y |
Equal |
x <> y |
Not equal |
x >= y |
Büyüktür veya eşittir |
x > y |
Büyüktür |
x < y |
Küçüktür |
x <= y |
Küçüktür veya eşittir |
x & y |
Bitiştirme |
x ?? y |
Coalesce |
Metin değerlerinin yerel türü, iç türüdür text
.
İkili değer bir bayt dizisini temsil eder.
İkili değerler için değişmez söz dizimi olmasa da, bunları oluşturmak için birkaç standart kitaplık işlevi sağlanır. İkili değerler, iç işlevi #binary
kullanılarak da oluşturulabilir.
Aşağıdaki örnek, bayt listesinden bir ikili değer oluşturur:
#binary( {0x00, 0x01, 0x02, 0x03} )
İkili değerlerde aşağıdaki işleçler tanımlanır:
Operatör | Sonuç |
---|---|
x = y |
Equal |
x <> y |
Not equal |
x >= y |
Büyüktür veya eşittir |
x > y |
Büyüktür |
x < y |
Küçüktür |
x <= y |
Küçüktür veya eşittir |
x ?? y |
Coalesce |
İkili değerlerin yerel türü, iç tür ikili türüdür.
Liste değeri, numaralandırıldığında bir değer dizisi oluşturan bir değerdir. Liste tarafından üretilen bir değer, liste de dahil olmak üzere herhangi bir türde değer içerebilir. Listeler aşağıdaki gibi başlatma söz dizimi kullanılarak oluşturulabilir:
list-expression:
{ item-listopt }
öğe-listesi:
öğe
öğe ,
öğesi-listesi
madde:
ifade
ifade ..
ifadesi
Aşağıda, üç metin değerine sahip bir liste tanımlayan bir liste ifadesi örneği verilmiştir: "A"
, "B"
ve "C"
.
{"A", "B", "C"}
Değer "A"
listedeki ilk öğedir ve değer "C"
listedeki son öğedir.
- Bir listenin öğeleri erişilene kadar değerlendirilmez.
- Liste söz dizimi kullanılarak oluşturulan liste değerleri öğeleri öğe listesinde göründükleri sırayla üretse de, genel olarak kitaplık işlevlerinden döndürülen listeler her numaralandırıldığında farklı bir küme veya farklı sayıda değer üretebilir.
Listeye a..b
tamsayı dizisi eklemek için, form kullanılabilir:
{ 1, 5..9, 11 } // { 1, 5, 6, 7, 8, 9, 11 }
Listedeki öğe sayısı (liste sayısı olarak bilinir) işlevi kullanılarak List.Count
belirlenebilir.
List.Count({true, false}) // 2
List.Count({}) // 0
Bir listede etkili bir şekilde sonsuz sayıda öğe olabilir; List.Count
bu tür listeler tanımlanmamıştır ve hata verebilir veya sonlandırılmayabilir.
Listede öğe yoksa, boş liste olarak adlandırılır. Boş bir liste şöyle yazılır:
{} // empty list
Listeler için aşağıdaki işleçler tanımlanır:
Operatör | Sonuç |
---|---|
x = y |
Equal |
x <> y |
Not equal |
x & y |
Concatenate |
x ?? y |
Coalesce |
Örneğin:
{1, 2} & {3, 4, 5} // {1, 2, 3, 4, 5}
{1, 2} = {1, 2} // true
{2, 1} <> {1, 2} // true
Yerel liste değerleri türü, öğesinin öğe türünü belirten iç türüdürlist
any
.
Kayıt değeri, sıralı bir alan dizisidir. Alan, kayıttaki alanı benzersiz olarak tanımlayan bir metin değeri olan alan adından ve alan değerinden oluşur. Alan değeri, kayıt da dahil olmak üzere herhangi bir tür değer olabilir. Kayıtlar aşağıdaki gibi başlatma söz dizimi kullanılarak oluşturulabilir:
kayıt-ifadesi:
[
alan listesitercihi ]
alan-listesi:
alan
alan ,
alanı-listesi
alan:
alan adı=
ifadesi
alan-adı:
genelleştirilmiş tanımlayıcı
quoted-identifier
Aşağıdaki örnek, değeri ile adlı x
bir alan ve değeri 1
ile adlı y
bir alan içeren 2
bir kayıt oluşturur.
[ x = 1, y = 2 ]
Aşağıdaki örnek, iç içe kayıt değerine sahip a
adlı alana sahip bir kayıt oluşturur. İç içe kayıt, değeriyle 2
adlı b
bir alana sahiptir.
[ a = [ b = 2 ] ]
Kayıt ifadesi değerlendirilirken aşağıdakiler geçerlidir:
Her alan adına atanan ifade, ilişkili alanın değerini belirlemek için kullanılır.
Bir alan adına atanan ifade değerlendirildiğinde bir değer üretirse, sonuçta elde edilen kaydın alanının değeri olur.
Bir alan adına atanan ifade değerlendirildiğinde bir hata oluşturursa, bir hatanın oluşturulduğu gerçeği, oluşturulan hata değeriyle birlikte alana kaydedilir. Bu alana daha sonra erişim, kaydedilen hata değeriyle bir hatanın yeniden yükseltilmesine neden olur.
İfade, üst ortam gibi bir ortamda değerlendirilir ve yalnızca kaydın başlatılmakta olan alan dışındaki her alanının değerine karşılık gelen değişkenler birleştirilir.
Kayıttaki bir değer, ilgili alana erişilene kadar değerlendirilmez.
Kayıttaki bir değer en fazla bir kez değerlendirilir.
İfadenin sonucu, boş meta veri kaydına sahip bir kayıt değeridir.
Kayıttaki alanların sırası, kayıt başlatıcısı-ifadesinde göründükleri sırayla tanımlanır.
Belirtilen her alan adının kayıt içinde benzersiz olması gerekir, aksi durumda bu bir hatadır. Adlar sıralı karşılaştırma kullanılarak karşılaştırılır.
[ x = 1, x = 2 ] // error: field names must be unique
[ X = 1, x = 2 ] // OK
Alanları olmayan bir kayda boş kayıt adı verilir ve aşağıdaki gibi yazılır:
[] // empty record
Bir alana erişilirken veya iki kayıt karşılaştırılırken bir kaydın alanlarının sırası önemli olmasa da, kaydın alanlarının numaralandırılması gibi diğer bağlamlarda önemlidir.
Alanlar elde edildiğinde aynı iki kayıt farklı sonuçlar üretir:
Record.FieldNames([ x = 1, y = 2 ]) // [ "x", "y" ]
Record.FieldNames([ y = 1, x = 2 ]) // [ "y", "x" ]
Bir kayıttaki alanların sayısı işlevi kullanılarak Record.FieldCount
belirlenebilir. Örneğin:
Record.FieldCount([ x = 1, y = 2 }) // 2
Record.FieldCount([]) // 0
Kayıt başlatma söz dizimini [ ]
kullanmaya ek olarak, kayıtlar bir değer listesinden ve alan adları listesinden veya kayıt türünden oluşturulabilir. Örneğin:
Record.FromList({1, 2}, {"a", "b"})
Yukarıdakiler aşağıdakilere eşdeğerdir:
[ a = 1, b = 2 ]
Kayıt değerleri için aşağıdaki işleçler tanımlanır:
Operatör | Sonuç |
---|---|
x = y |
Equal |
x <> y |
Not equal |
x & y |
Adres Mektup Birleştirme |
x ?? y |
Coalesce |
Aşağıdaki örneklerde yukarıdaki işleçler gösterilmektedir. Kayıt birleştirmenin, alan adlarında çakışma olması halinde, sol işlenendeki alanları geçersiz kılmak için sağ işlenendeki alanları kullandığını unutmayın.
[ 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
Kayıt değerlerinin yerel türü, açık boş alan listesini belirten iç türüdür record
.
Tablo değeri sıralı bir satır dizisidir. Satır, sıralı bir sütun değerleri dizisidir. Tablo türü tablodaki tüm satırların uzunluğunu, tablo sütunlarının adlarını, tablo sütunlarının türlerini ve tablo anahtarlarının yapısını (varsa) belirler.
Tablolar için değişmez söz dizimi olmasa da, bunları oluşturmak için birkaç standart kitaplık işlevi sağlanır. Tablolar, iç işlevi #table
kullanılarak da oluşturulabilir.
Aşağıdaki örnek, sütun adları listesinden ve satır listesinden bir tablo oluşturur. Sonuçta elde edilen tablo iki sütun type any
ve üç satır içerir.
#table({"x", "x^2"}, {{1,1}, {2,4}, {3,9}})
#table
tam tablo türünü belirtmek için de kullanılabilir:
#table(
type table [Digit = number, Name = text],
{{1,"one"}, {2,"two"}, {3,"three"}}
)
Burada yeni tablo değeri, sütun adlarını ve sütun türlerini belirten bir tablo türüne sahiptir.
Tablo değerleri için aşağıdaki işleçler tanımlanır:
Operatör | Sonuç |
---|---|
x = y |
Equal |
x <> y |
Not equal |
x & y |
Bitiştirme |
x ?? y |
Coalesce |
Tablo birleştirme, adlandırılmış sütunlar gibi hizalanır ve işlenen tablolardan yalnızca birinde görünen sütunlar için doldurulur null
. Aşağıdaki örnekte tablo birleştirme gösterilmektedir:
#table({"A","B"}, {{1,2}})
& #table({"B","C"}, {{3,4}})
A | B | C |
---|---|---|
1 |
2 |
null |
null |
3 |
4 |
Tablo değerlerinin yerel türü, sütun adlarını listeleyen, tüm sütun türlerini belirten ve anahtar içermeyen özel bir tablo türüdür (iç türünden table
türetilir). (Şuraya gidin: Tablo türleriyle ilgili ayrıntılar için tablo türleri.)
İşlev değeri , bir dizi bağımsız değişkeni tek bir değerle eşleyen bir değerdir. İşlev değerlerinin ayrıntıları İşlevler bölümünde açıklanmıştır.
Tür değeri, diğer değerleri sınıflandırır. Tür değerlerinin ayrıntıları Türler bölümünde açıklanmıştır.