Arvot
Arvo on tieto, joka tuotetaan lausekkeen arvioinnin avulla. Tässä osiossa kuvataan M-kielen arvojen lajit. Kuhunkin arvoon liittyy literaalisyntaksi, sen lajin arvojen joukko, tämän arvojoukon määrittämä operaattorijoukko sekä luontainen tyyppi, joka on määritetty uusille rakennetuille arvoille.
Laji | Literal |
---|---|
Nolla | null |
Looginen | true false |
Määrä | 0 1 -1 1.5 2.3e-5 |
Time | #time(09,15,00) |
Päivämäärä | #date(2013,02,26) |
Päivämäärä ja aika | #datetime(2013,02,26, 09,15,00) |
Päivämäärä, aika ja aikavyöhyke | #datetimezone(2013,02,26, 09,15,00, 09,00) |
Kesto | #duration(0,1,30,0) |
Teksti | "hello" |
Binääri | #binary("AQID") |
Luettelo | {1, 2, 3} |
Nauhoita | [ A = 1, B = 2 ] |
Table | #table({"X","Y"},{{0,1},{1,0}}) |
Funktio | (x) => x + 1 |
Tyyppi | type { number } type table [ A = any, B = text ] |
Seuraavissa osioissa käsitellään kutakin arvolajia yksityiskohtaisesti. Tyypit ja tyyppimääriteys on määritelty muodollisesti kohdassa Tyypit. Funktioarvot on määritetty kohdassa Funktiot. Seuraavissa osioissa luetellaan kullekin arvolajille määritetyt operaattorit ja annetaan esimerkkejä. Operaattorin semantiikan täydellinen kuvaus on annettu kohdassa Operaattorit.
Tyhjäarvo
Tyhjäarvoa käytetään ilmaisemaan arvon puuttumista tai määrittämättömän tai tuntemattoman tilan arvoa. Tyhjäarvo kirjoitetaan literaalin null
avulla. Seuraavat operaattorit on määritetty tyhjäarvoille:
Operaattori | Result |
---|---|
x > y |
Suurempi kuin |
x >= y |
Suurempi tai yhtä suuri kuin |
x < y |
Pienempi kuin |
x <= y |
Pienempi tai yhtä suuri kuin |
x = y |
Equal |
x <> y |
Not equal |
x ?? y |
Coalesce |
Arvon alkuperäinen null
tyyppi on perustyyppi null
.
Looginen
Totuusarvo-operaatioissa käytetään loogista arvoa , jonka arvo on tosi tai epätosi. Looginen arvo kirjoitetaan literaalien true
ja false
avulla. Seuraavat operaattorit on määritetty loogisille arvoille:
Operaattori | Result |
---|---|
x > y |
Suurempi kuin |
x >= y |
Suurempi tai yhtä suuri kuin |
x < y |
Pienempi kuin |
x <= y |
Pienempi tai yhtä suuri kuin |
x = y |
Equal |
x <> y |
Not equal |
x or y |
Ehdollinen looginen TAI |
x ?? y |
Coalesce |
x and y |
Ehdollinen looginen JA |
not x |
Looginen NOT |
Molempien loogisten arvojen (true
ja false
) alkuperäinen tyyppi on perustyyppi logical
.
Määrä
Lukuarvoa käytetään numeerisissa ja aritmeettiisissa toiminnoissa. Seuraavissa on esimerkkejä lukuliteraalista:
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)
Luku esitetään vähintään Double-tarkkuudella (mutta voi sisältää suuremmankin tarkkuuden). Double-esitys on yhtenevä IEEE 64-bittisen binaarisia liukulukuja määrittäyn kaksoistarkkuusstandardiin, joka on määritetty kohteessa [IEEE 754-2008]. (. Double-esityksessä on likimääräinen dynaaminen alue 5,0 x 10324 – 1,7 x 10308 15-16 merkin tarkkuudella.)
Seuraavia erikoisarvoja pidetään myös lukuarvoina:
Positiivinen nolla ja negatiivinen nolla. Useimmissa tilanteissa positiivinen nolla ja negatiivinen nolla toimivat samalla tavalla kuin yksinkertainen arvo nolla, mutta jotkin toiminnot erottavat toisistaan nämä kaksi.
Positiivinen ääretön (
#infinity
) ja negatiivinen ääretön (-#infinity
). Tällaiset toiminnot tuottavat rajattoman määrän jakamalla muun kuin nollaluvun nollalla. Esimerkiksi tuottaa positiivisen1.0 / 0.0
äärettömän, ja-1.0 / 0.0
tuottaa negatiivisen äärettömän.Not-a-Number-arvo (
#nan
), usein lyhennettynä NaN. NaN:t ovat seurausta virheellisestä liukulukutoiminnosta, kuten nollan jakamisesta nollalla.
Binaariset matemaattiset toiminnot suoritetaan käyttäen Tarkkuus-arvoa. Tarkkuus määrittää toimialueen, johon operandeja pyöristetään, ja toimialueen, jossa toiminto suoritetaan. Jos täsmällisesti määritettyä tarkkuutta ei ole, nämä toiminnot suoritetaan käyttämällä Double Precision arvoa.
Jos matemaattisen toiminnon tulos on liian pieni kohdemuodolle, toiminnon tuloksesta tulee positiivinen nolla tai negatiivinen nolla.
Jos matemaattisen toiminnon tulos on liian suuri kohdemuodolle, toiminnon tuloksesta tulee positiivinen ääretön tai negatiivinen ääretön.
Jos matemaattinen toiminto on virheellinen, toiminnon tuloksesta tulee NaN.
Jos toinen tai molemmat liukulukutoiminnon operandeista on NaN, toiminnon tuloksesta tulee NaN.
Seuraavat operaattorit on määritetty numeroarvoille:
Operaattori | Result |
---|---|
x > y |
Suurempi kuin |
x >= y |
Suurempi tai yhtä suuri kuin |
x < y |
Pienempi kuin |
x <= y |
Pienempi tai yhtä suuri kuin |
x = y |
Equal |
x <> y |
Not equal |
x + y |
Summa |
x - y |
Ero |
x * y |
Tuote |
x / y |
Osamäärä |
x ?? y |
Coalesce |
+x |
Yksiarvoinen plus |
-x |
Negaatio |
Numeroarvojen alkuperäinen tyyppi on perustyyppi number
.
Aika
Aika-arvo tallentaa läpinäkymättömän päivän esitysajan. Aika koodataan jaksoa keskiyöstä -lukuna, joka laskee 24 tunnin aikana kuluneiden 100 nanosekunnin jaksojen määrän. Jaksojen enimmäismäärä keskiyöstä lähtien vastaa 23:59:59.9999999 tuntia.
Vaikka ajoille ei ole literaalisyntaksia, niiden muodostamiseen annetaan useita vakiokirjastofunktioita. Ajat voidaan myös muodostaa käyttämällä perusfunktiota #time
:
#time(hour, minute, second)
Seuraava on tottettava, tai esiin tulee virhe syykoodilla Expression.Error
:
0 ≤ tunnin ≤ 24
0 ≤ minuuttia ≤ 59
0 ≤ toinen ≤ 59
Lisäksi jos tunti = 24, minuutin ja sekunnin on oltava nolla.
Seuraavat operaattorit on määritetty aika-arvoille:
Operaattori | Result |
---|---|
x = y |
Equal |
x <> y |
Not equal |
x >= y |
Suurempi tai yhtä suuri kuin |
x > y |
Suurempi kuin |
x < y |
Pienempi kuin |
x <= y |
Pienempi tai yhtä suuri kuin |
x ?? y |
Coalesce |
Seuraavat operaattorit sallivat toisen tai kummankin operandin olevan päivämäärä:
Operaattori | Vasen operandi | Oikea operandi | Merkitys |
---|---|---|---|
x + y |
time |
duration |
Päivämäärän siirtymä keston mukaan |
x + y |
duration |
time |
Päivämäärän siirtymä keston mukaan |
x - y |
time |
duration |
Päivämäärän siirtymä negatiivisen keston mukaan |
x - y |
time |
time |
Päivämäärien välinen kesto |
x & y |
date |
time |
Yhdistetty päivämäärä ja aika |
Aika-arvojen alkuperäinen tyyppi on perustyyppi time
.
Päivämäärä
Päivämääräarvo tallentaa tietyn päivän läpinäkymättömän esityksen. Päivämäärä koodataan päiviksi epochista alkaen 1. tammikuuta 0001 gregoriaanisen kalenterin yleisestä aikakaudesta. Aikakauden jälkeen olevien päivien enimmäismäärä on 3652058, mikä vastaa 31. joulukuuta 9999.
Vaikka päivämäärille ei ole literaalisyntaksia, niiden muodostamiseen annetaan useita vakiokirjastofunktioita. Päivämäärät voidaan myös muodostaa käyttämällä perusfunktiota #date
:
#date(year, month, day)
Seuraava on tottettava, tai esiin tulee virhe syykoodilla Expression.Error
:
1 ≤ vuoden ≤ 9999
1 ≤ kuukausi ≤ 12
1 ≤ päivän ≤ 31
Lisäksi päivän on oltava kelvollinen valitulle kuukaudelle ja vuodelle.
Seuraavat operaattorit on määritetty päivämääräarvoille:
Operaattori | Result |
---|---|
x = y |
Equal |
x <> y |
Not equal |
x >= y |
Suurempi tai yhtä suuri kuin |
x > y |
Suurempi kuin |
x < y |
Pienempi kuin |
x <= y |
Pienempi tai yhtä suuri kuin |
x ?? y |
Coalesce |
Seuraavat operaattorit sallivat toisen tai kummankin operandin olevan päivämäärä:
Operaattori | Vasen operandi | Oikea operandi | Merkitys |
---|---|---|---|
x + y |
date |
duration |
Päivämäärän siirtymä keston mukaan |
x + y |
duration |
date |
Päivämäärän siirtymä keston mukaan |
x - y |
date |
duration |
Päivämäärän siirtymä negatiivisen keston mukaan |
x - y |
date |
date |
Päivämäärien välinen kesto |
x & y |
date |
time |
Yhdistetty päivämäärä ja aika |
Päivämääräarvojen alkuperäinen tyyppi on perustyyppi date
.
DateTime
Datetime-arvo sisältää sekä päivämäärän että kellonajan.
Datetimes-kirjastoille ei ole literaalisyntaksia, mutta niiden muodostamiseen annetaan useita vakiokirjastofunktioita. Datetimes voidaan myös muodostaa käyttämällä perusfunktiota #datetime
:
#datetime(year, month, day, hour, minute, second)
Seuraava on tottettava, tai esiin tulee virhe syykoodilla Expression.Error: 1 ≤ year ≤ 9999
1 ≤ kuukausi ≤ 12
1 ≤ päivän ≤ 31
0 ≤ tunnin ≤ 23
0 ≤ minuuttia ≤ 59
0 ≤ toinen ≤ 59
Lisäksi päivän on oltava kelvollinen valitulle kuukaudelle ja vuodelle.
Seuraavat operaattorit on määritetty päivämäärä- ja aika-arvoille:
Operaattori | Result |
---|---|
x = y |
Equal |
x <> y |
Not equal |
x >= y |
Suurempi tai yhtä suuri kuin |
x > y |
Suurempi kuin |
x < y |
Pienempi kuin |
x <= y |
Pienempi tai yhtä suuri kuin |
x ?? y |
Coalesce |
Seuraavat operaattorit sallivat toisen tai kummankin operandin olevan päivämäärä/aika:
Operaattori | Vasen operandi | Oikea operandi | Merkitys |
---|---|---|---|
x + y |
datetime |
duration |
Datetime-siirtymä keston mukaan |
x + y |
duration |
datetime |
Datetime-siirtymä keston mukaan |
x - y |
datetime |
duration |
Datetime-siirtymä negatiivisen keston mukaan |
x - y |
datetime |
datetime |
Datetimes-ajan välinen kesto |
Päivämäärä- ja aika-arvojen alkuperäinen tyyppi on perustyyppi datetime
.
Päivämäärä, aika ja aikavyöhyke
datetimezone-arvo sisältää päivämäärän/ajan ja aikavyöhykkeen. timezone on koodattu numerona minuutin siirtymänä UTC-ajasta, joka laskee, montako minuuttia datetime aika-osa tulee korvata UTC-ajasta (Universal Coordinated Time). Minimiluku minuuttia offset-kohteesta UTC-tasosta on -840, joka edustaa UTC-offset-arvoa -14:00 tai neljäätoista tuntia ennen UTC-aikaa. Maksimiluku minuuttia offset-kohteesta UTC-päivästä on 840, joka vastaa UTC-offset-arvoa 14:00.
Vaikka päivämäärä- ja aikavyöhykkeille ei ole literaalisyntaksia, niiden muodostamiseen annetaan useita vakiokirjastofunktioita. Datetimezones voidaan myös muodostaa käyttämällä perusfunktiota #datetimezone
:
#datetimezone(
year, month, day,
hour, minute, second,
offset-hours, offset-minutes)
Seuraava on tottettava, tai esiin tulee virhe syykoodilla Expression.Error
:
1 ≤ vuoden ≤ 9999
1 ≤ kuukausi ≤ 12
1 ≤ päivän ≤ 31
0 ≤ tunnin ≤ 23
0 ≤ minuuttia ≤ 59
0 ≤ toinen ≤ 59
-14 ≤ siirtymätuntien ≤ 14
-59 ≤ siirtymäminuutit ≤ 59
Lisäksi päivän on oltava kelvollinen valitulle kuukaudelle ja vuodelle. Jos siirtymätunnit = 14, offset-minutes <= 0 ja, jos siirtymätunnit = -14, offset-minutes >= 0.
Seuraavat operaattorit on määritetty päivämäärä- ja aikavyöhykearvoille:
Operaattori | Result |
---|---|
x = y |
Equal |
x <> y |
Not equal |
x >= y |
Suurempi tai yhtä suuri kuin |
x > y |
Suurempi kuin |
x < y |
Pienempi kuin |
x <= y |
Pienempi tai yhtä suuri kuin |
x ?? y |
Coalesce |
Seuraavat operaattorit sallivat toisen tai kummankin operandin olevan päivämäärä/aikavyöhyke:
Operaattori | Vasen operandi | Oikea operandi | Merkitys |
---|---|---|---|
x + y |
datetimezone |
duration |
Datetimezone-siirtymä keston mukaan |
x + y |
duration |
datetimezone |
Datetimezone-siirtymä keston mukaan |
x - y |
datetimezone |
duration |
Datetimezone-siirtymä negatiivisen keston mukaan |
x - y |
datetimezone |
datetimezone |
Päivämäärien, aikojen ja aikavyöhykkeiden välinen kesto |
Päivämäärä- ja aikavyöhyke-arvojen alkuperäinen tyyppi on perustyyppi datetimezone
.
Kesto
Kesto-arvo tallentaa läpinäkymättömän esityksen aikajanan kahden pisteen välisestä etäisyydestä, joka mitataan 100 nanosekunnin jaksojen avulla. Keston suuruus voi olla positiivinen tai negatiivinen, ja positiiviset arvot ilmaisevat edistymisen ajassa eteenpäin ja negatiiviset arvot ilmaisevat edistymisen ajassa taaksepäin. Pienin arvo, joka voidaan tallentaa kestoon, on -9223372036854775808 jaksoa eli 10 675 199 päivää 2 tuntia 48 minuuttia 05,4775808 sekuntia taaksepäin ajassa. Suurin arvo, joka voidaan tallentaa kestoon, on 9223372036854775807 jaksoa eli 10 675 199 päivää 2 tuntia 48 minuuttia 05,4775807 sekuntia eteenpäin ajassa.
Vaikka kestoille ei ole literaalisyntaksia, niiden muodostamiseen annetaan useita vakiokirjastofunktioita. Kestot voidaan myös muodostaa käyttämällä perusfunktiota #duration
:
#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
Seuraavat operaattorit on määritetty kestoarvoille:
Operaattori | Result |
---|---|
x = y |
Equal |
x <> y |
Not equal |
x >= y |
Suurempi tai yhtä suuri kuin |
x > y |
Suurempi kuin |
x < y |
Pienempi kuin |
x <= y |
Pienempi tai yhtä suuri kuin |
x ?? y |
Coalesce |
Lisäksi seuraavat operaattorit sallivat toisen tai kummankin operandin olevan kestoarvo:
Operaattori | Vasen operandi | Oikea operandi | Merkitys |
---|---|---|---|
x + y |
datetime |
duration |
Datetime-siirtymä keston mukaan |
x + y |
duration |
datetime |
Datetime-siirtymä keston mukaan |
x + y |
duration |
duration |
Kestojen summa |
x - y |
datetime |
duration |
Datetime-siirtymä negatiivisen keston mukaan |
x - y |
datetime |
datetime |
Datetimes-ajan välinen kesto |
x - y |
duration |
duration |
Kestojen ero |
x * y |
duration |
number |
N kertaa kesto |
x * y |
number |
duration |
N kertaa kesto |
x / y |
duration |
number |
Keston murtoluku |
Kestoarvojen alkuperäinen tyyppi on perustyyppi duration
.
Teksti
Tekstiarvo edustaa Unicode-merkkien sarjaa. Tekstiarvoilla on literaalimuoto seuraavan kieliopin mukaisesti:
_text literaali:
"
text-literal-charactersopt "
text-literal-characters:
text-literal-character text-literal-charactersopt
text-literal-character:
yksitekstinen-merkki
character-escape-sequence
double-quote-escape-sequence
single-text-character:
Kaikki merkit paitsi "
(U+0022
) tai #
(U+0023
) minkä jälkeen (
(U+0028
)
double-quote-escape-sequence:
""
(U+0022
, U+0022
)
Seuraavassa on esimerkki tekstiarvosta:
"ABC" // the text value ABC
Seuraavat operaattorit on määritetty tekstiarvoille:
Operaattori | Result |
---|---|
x = y |
Equal |
x <> y |
Not equal |
x >= y |
Suurempi tai yhtä suuri kuin |
x > y |
Suurempi kuin |
x < y |
Pienempi kuin |
x <= y |
Pienempi tai yhtä suuri kuin |
x & y |
Ketjutus |
x ?? y |
Coalesce |
Tekstiarvojen alkuperäinen tyyppi on perustyyppi text
.
Binaarinen
Binaariarvo edustaa tavujen sarjaa.
Vaikka binaariarvoille ei ole literaalisyntaksia, niiden muodostamiseen annetaan useita vakiokirjastofunktioita. Binaariarvot voidaan myös muodostaa käyttämällä perusfunktiota #binary
.
Seuraava esimerkki muodostaa binaariarvon tavuluettelosta:
#binary( {0x00, 0x01, 0x02, 0x03} )
Seuraavat operaattorit on määritetty binaariarvoille:
Operaattori | Result |
---|---|
x = y |
Equal |
x <> y |
Not equal |
x >= y |
Suurempi tai yhtä suuri kuin |
x > y |
Suurempi kuin |
x < y |
Pienempi kuin |
x <= y |
Pienempi tai yhtä suuri kuin |
x ?? y |
Coalesce |
Binaariarvojen alkuperäinen tyyppi on binaarinen.
List
Luettelon arvo on arvo, joka tuottaa arvojen sarjan, kun ne numeroidaan. Luettelon tuottama arvo voi sisältää minkä tahansa arvon, mukaan lukien luettelon. Luetteloita voidaan muodostaa alustussyntaksin avulla seuraavasti:
list-expression:
{ item-listopt }
item-list:
kohta
item item-list ,
kohta:
lauseke
lausekelauseke..
Seuraavassa on esimerkki list-expression-lausekkeesta, joka määrittää luettelon, jossa on kolme tekstiarvoa: "A"
, "B"
ja "C"
.
{"A", "B", "C"}
Arvo "A"
on luettelon ensimmäinen kohde, ja arvo "C"
on luettelon viimeinen kohde.
- Luettelon kohteita ei arvioida, ennen kuin ne ovat käytettävissä.
- Luettelon syntaksilla muodostetut luetteloarvot tuottavat kohteita siinä järjestyksessä, jossa ne näkyvät kohdeluettelossa, yleensä kirjastofunktioista palautetut luettelot saattavat tuottaa eri joukon tai eri määrän arvoja aina, kun ne numeroidaan.
Jos haluat sisällyttää luetteloon kokonaisluvun, voit käyttää lomaketta a..b
:
{ 1, 5..9, 11 } // { 1, 5, 6, 7, 8, 9, 11 }
Luettelon kohteiden määrä, jota kutsutaan luetteloiden määräksi, voidaan määrittää käyttämällä -funktiotaList.Count
.
List.Count({true, false}) // 2
List.Count({}) // 0
Luettelolla voi olla tehokkaasti rajaton määrä kohteita. List.Count
tällaisten luetteloiden määrittämätön arvo voi joko aiheuttaa virheen tai olla lopettamatta.
Jos luettelo ei sisällä kohteita, sitä kutsutaan tyhjäksi luetteloksi. Tyhjä luettelo kirjoitetaan seuraavasti:
{} // empty list
Seuraavat operaattorit on määritetty luetteloille:
Operaattori | Result |
---|---|
x = y |
Equal |
x <> y |
Not equal |
x & y |
Concatenate |
x ?? y |
Coalesce |
Esimerkkejä:
{1, 2} & {3, 4, 5} // {1, 2, 3, 4, 5}
{1, 2} = {1, 2} // true
{2, 1} <> {1, 2} // true
Luetteloarvojen alkuperäinen tyyppi on perustyyppi list
, joka määrittää kohteen tyypin any
.
Nauhoita
Tietuearvo on järjestetty kenttien järjestys. Kenttä koostuu kentän nimestä, joka on tekstiarvo, joka yksilöi kentän tietueessa, ja kentän arvosta. Kentän arvo voi olla mikä tahansa arvo, mukaan lukien tietue. Tietueita voidaan muodostaa alustussyntaksin avulla seuraavasti:
record-expression:
[
field-listopt ]
field-list:
pelto
field ,
field-list
pelto:
field-name =
expression
field-name:
generalized-identifier
quoted-identifier
Seuraava esimerkki muodostaa tietueen, jonka kentän nimi x
on , jonka arvo 1
on , ja kentän nimeltä y
, jonka arvo 2
on .
[ x = 1, y = 2 ]
Seuraava esimerkki muodostaa tietueen, jonka a
kentän nimi on a ja jossa on sisäkkäinen tietuearvo. Sisäkkäisen tietueen kentän nimi b
on , jonka arvo 2
on .
[ a = [ b = 2 ] ]
Seuraava pätee, kun arvioidaan tietuelauseketta:
Kullekin kentän nimelle määritettyä lauseketta käytetään liittyvän kentän arvon määrittämiseen.
Jos kentän nimelle määritetty lauseke tuottaa arvon, kun se arvioidaan, siitä tulee tulokseksi saatavan tietueen kentän arvo.
Jos kentän nimelle määritetty lauseke aiheuttaa virheen, kun se on arvioitu, virheen esiintymä tallennetaan kenttään yhdessä esiin nousseen virhearvon kanssa. Tämän kentän myöhempi käyttö aiheuttaa virheen uudelleen, ja virhearvo kirjataan.
Lauseketta arvioidaan ympäristössä, kuten pääympäristössä, jossa on vain yhdistettyjä muuttujia, jotka vastaavat tietueen jokaisen kentän arvoa lukuun ottamatta sitä, jota valmistellaan.
Tietueen arvoa ei arvioida, ennen kuin vastaava kenttä on käytettävissä.
Tietueen arvo arvioidaan enintään kerran.
Lausekkeen tulos on tietuearvo, jolla on tyhjä metatietotietue.
Tietueen kenttien järjestys määritetään siinä järjestyksessä, jossa ne näkyvät record-initializer-expression-lausekkeessa.
Jokaisen määritetyn kentän nimen on oltava yksilöllinen tietueen sisällä, tai se on virhe. Nimiä verrataan koordinaattorivertailun avulla.
[ x = 1, x = 2 ] // error: field names must be unique
[ X = 1, x = 2 ] // OK
Tietuetta, jossa ei ole kenttiä, kutsutaan tyhjäksi tietueeksi, ja se kirjoitetaan seuraavasti:
[] // empty record
Vaikka tietueen kenttien järjestys ei ole merkitsevä, kun käytetään kenttää tai verrataan kahta tietuetta, se on merkitsevä muissa yhteyksissä, kuten silloin, kun tietueen kentät numeroidaan.
Samat kaksi tietuetta tuottavat eri tulokset, kun kentät on saatu:
Record.FieldNames([ x = 1, y = 2 ]) // [ "x", "y" ]
Record.FieldNames([ y = 1, x = 2 ]) // [ "y", "x" ]
Tietueen kenttien määrä voidaan määrittää käyttämällä -funktiota Record.FieldCount
. Esimerkkejä:
Record.FieldCount([ x = 1, y = 2 }) // 2
Record.FieldCount([]) // 0
Sen lisäksi, että tietueen alustuksen syntaksi [ ]
on , tietueet voidaan muodostaa arvoluettelosta sekä kenttien nimien tai tietuetyyppien luettelosta. Esimerkkejä:
Record.FromList({1, 2}, {"a", "b"})
Yllä oleva vastaa seuraavaa:
[ a = 1, b = 2 ]
Seuraavat operaattorit on määritetty tietuearvoille:
Operaattori | Result |
---|---|
x = y |
Equal |
x <> y |
Not equal |
x & y |
Yhdistä |
x ?? y |
Coalesce |
Seuraavissa esimerkeissä havainnollistetaan yllä olevat operaattorit. Huomaa, että tietueiden yhdistäminen käyttää oikeanpuoleisen operandin kenttiä ohittamaan vasemmanpuoleisen operandin kentät, jos kenttien nimissä on päällekkäisyyttä.
[ 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
Tietuearvojen alkuperäinen tyyppi on perustyyppi record
, joka määrittää avoimen tyhjän kenttien luettelon.
Table
Taulukon arvo on järjestetty rivien järjestys. Rivi on järjestetty sarakearvojen järjestys. Taulukon tyyppi määrittää taulukon kaikkien rivien pituuden, taulukon sarakkeiden nimet, taulukon sarakkeiden tyypit ja taulukon (jos sellainen on) rakenteen.
Vaikka taulukoille ei ole literaalisyntaksia, niiden muodostamiseen annetaan useita vakiokirjastofunktioita. Taulukot voidaan myös muodostaa käyttämällä perusfunktiota #table
.
Seuraava esimerkki muodostaa taulukon sarakkeiden nimien luettelosta ja riviluettelosta. Tuloksena saatava taulukko sisältää kaksi saraketta type any
ja kolme riviä.
#table({"x", "x^2"}, {{1,1}, {2,4}, {3,9}})
#table
voidaan myös käyttää määrittämään koko taulukon tyyppi:
#table(
type table [Digit = number, Name = text],
{{1,"one"}, {2,"two"}, {3,"three"}}
)
Tässä uuden taulukon arvossa on taulukkotyyppi, joka määrittää sarakkeiden nimet ja saraketyypit.
Seuraavat operaattorit on määritetty taulukkoarvoille:
Operaattori | Result |
---|---|
x = y |
Equal |
x <> y |
Not equal |
x & y |
Ketjutus |
x ?? y |
Coalesce |
Taulukon yhdistäminen tasaa samankaltaiset nimetyt sarakkeet ja täyttää null
sarakkeille, jotka esiintyvät vain yhdessä operandi-taulukossa. Seuraavassa esimerkissä havainnollistetaan taulukon ketjutus:
#table({"A","B"}, {{1,2}})
& #table({"B","C"}, {{3,4}})
A | B | C |
---|---|---|
1 |
2 |
null |
null |
3 |
4 |
Taulukon arvojen alkuperäinen tyyppi on mukautettu taulukkotyyppi (johdettu perustyypistä table
), jossa luetellaan sarakkeiden nimet, määritetään kaikki saraketyypit, eikä sillä ole avaimia. (Siirry kohteeseen Taulukkotyypit taulukkotyypeistä.)
Function
Funktion arvo on arvo, joka yhdistää argumenttijoukon yksittäiseen arvoon. Funktioiden arvojen tiedot on kuvattu kohdassa Funktiot.
Tyyppi
Tyypin arvo on arvo, joka luokittelee muut arvot. Tyyppiarvojen tiedot on kuvattu kohdassa Tyypit.